C Day 4

同样两个整数,
完成四种不同计算

今天继续读取两个整数,用减法、乘法、整数除法和取余得到不同结果,并第一次认识商与余数的关系。

减法与乘法

C 语言使用 - 做减法,使用英文半角星号 * 做乘法,而不是数学符号 ×

day4.c
int difference = first - second;
printf("%d - %d = %d\n", first, second, difference);

int product = first * second;
printf("%d * %d = %d\n", first, second, product);

整数除法只保留整数部分

firstsecondquotient 都是 int。因此 9 / 4 得到 2,小数部分会被直接丢掉,不会得到 2.25,也不会四舍五入。

day4.c
int quotient = first / second;
printf("%d / %d = %d\n", first, second, quotient);

百分号计算余数

% 是取余运算符。9 % 4 得到 1,因为 9 = 4 × 2 + 1

day4.c
int remainder = first % second;
printf("Remainder = %d\n", remainder);

实际运行结果

9 - 4 = 5
9 * 4 = 36
9 / 4 = 2
Remainder = 1

Visual Studio 显示生成成功,退出代码为 0。减法、乘法、除法和取余都按预测得到结果。

一次很小但重要的排错

减法输出的 \n 后曾多写一个空格。程序换行后又先输出这个空格,使下一行的乘法结果看起来像缩进。删除引号里的空格后,两行重新左对齐。

引号中的字符都会被 printf 原样输出;即使空格写在 \n 后面,它也会出现在新的一行。

除数不能为零

减法和乘法可以使用 0,但 /% 的第二个数不能是 0。当前程序还没有保护,因此没有执行除零测试。

今天真正掌握的内容

  • 会使用 -*/%
  • 理解整数除法会舍去小数部分
  • 能解释商与余数之间的关系
  • 知道除法和取余的第二个数不能为零
  • 能根据输出中的异常空格回到字符串中寻找原因

下一步将学习 if / else,在第二个数为零时主动阻止除法和取余。