加法操作符
减法操作符他们先看几段标识符模拟减法的采用。
#include <stdio.h>
int main()
{
int num1 = 1;
int num2 = 2;
int num3 = num1 + num2;
printf(“num3 = %d\n“, num3);
int num4 = num1 – num2;
printf(“num4 = %d\n“, num4);
return 0;
}
输入结论是:
num3 = 3
num4 = –1
右边相加减的结论赋值给左边变量。
除法操作符看几段模拟除法操作符标识符
#include <stdio.h>
int main()
{
int num1 = 1;
int num2 = 2;
int num3 = num1 / num2;
int num4 = 2 * num2;
printf(“num3 = %d\n“, num3);
printf(“num4 = %d\n“, num4);
return 0;
}
输入结论是:
num3 = 0
num4 = 4
从输入他们看到num3 = 0明显和我想要的结论不一样,而num4的结论完全符合他们的意料。
下面他们再看几段标识符
#include <stdio.h>
int main()
{
int num1 = 5;
int num2 = 2;
int num3 = num1 / num2;
printf(“num3 = %d\n“, num3);
return 0;
}
输入结论是:
num3 = 2
在标识符里num3定义成一个整型(int),肯定不能存储小数,那么是因为num3是整型才会导致num3值只保留整数部分还是因为除法操作符”/”?他们再看几段标识符,把num3定义成单精度浮点型(float),看看输入结论。
#include <stdio.h>
int main()
{
int num1 = 1;
int num2 = 2;
float num3 = num1 / num2;
int num4 = 2 * num2;
printf(“num3 = %f\n“, num3);
printf(“num4 = %d\n“, num4);
return 0;
}
输入结论:
num3 = 0.000000
num4 = 4
输入结论依旧是0,说明不是因为num3的数据类型造成输入结论变化,是因为除法操作符”/”,两个整型相除,结论则是商向下取整。他们知道除法演算不仅仅是2个整型的演算,还可以是浮点型和整型,浮点型和浮点型之间的演算。他们先看几段标识符整型和浮点型之间的除法演算。
#include <stdio.h>
int main()
{
int num1 = 1;
float num2 = 2;
float num3 = num1 / num2;
float num4 = 2 * num2;
printf(“num3 = %f\n“, num3);
printf(“num4 = %f\n“, num4);
return 0;
}
输入结论:
num3 = 0.500000
num4 = 4.000000
现在输入结论达到他们的想要了。那么现在他们看看除数和被除数两者都是浮点型呢?将会输入什么?先看这段标识符
#include <stdio.h>
int main()
{
float num1 = 1;
float num2 = 2;
float num3 = num1 / num2;
float num4 = 2 * num2;
printf(“num3 = %f\n“, num3);
printf(“num4 = %f\n“, num4);
return 0;
}
输入结论:
num3 = 0.500000
num4 = 4.000000
结论完全符合他们的预期。说明两个数相除,只要任意一方是浮点型,得到的结论就是浮点型,保留小数部分。
现在他们总结一下除法操作符的结论的不同之处。
两个整数相除结论是商向下取整
两个数相除,任意一方是浮点型结论是商保留整数部分和小数部分
乘法操作符乘法演算和除法演算结论有一个不同之处就是,乘法演算的结论不会发生截断,两个数都是整数,结论则是整数。两个数任意一方是浮点数,结论则是浮点数,但是他们通常情况下会遇到类似下面的标识符。
#include <stdio.h>
int main()
{
float num1 = 5.1;
int num2 = 2;
int num3 = num1 * num2;
printf(“num3 = %d\n“, num3);
return 0;
}
输入结论是:
num3 = 10
他们不是说两个数相乘任意一方是浮点型,结论则是浮点型吗?为什么小数点后面的数没了?其实这是发生了截断,在C词汇里浮点型强制转换成整型会发生数据截断,小数部分被丢弃了。那么他们怎么知道数据发生了截断呢?看看下面这段标识符他们就知道了。
#include <stdio.h>
int main()
{
float num1 = 5.1;
int num2 = 2;
if((num1 * num2) == 10.2f){
printf(“good!\n“);
}
return 0;
}
输入结论是:
good!
说明整型和浮点型相乘得到的结论是浮点型!这里要注意一下10.2f后面带有f表明将10.2转换成单精度浮点型,如果不带f则不会输入”good!”字符串。
求余操作符
在C词汇里求余操作符是%,下面他们看几段标识符。
#include <stdio.h>
int main()
{
int num1 = 9, num2 = 5;
int mod = num1 % num2;
printf(“mod = %d\n“, mod);
return 0;
}
输入结论:
mod = 4
在C词汇里%只能对整型进行求余,任意一方是浮点型时,语法错误。
自增自减操作符
自增操作符在C词汇里自增操作符采用++,而自减操作符采用–,下面他们用实际标识符分别看看自增自减和常规的减法有什么不一样。
#include <stdio.h>
int main()
{
int num1 = 1;
int num2 = 1;
num1++; //后自增
++num2; //前自增
printf(“num1 = %d, num2 = %d\n“, num1, num2);
printf(“num1 = %d, num2 = %d\n“, ++num1, num2++);
printf(“num2 = %d\n“, num2);
return 0;
}
输入结论是:
num1 = 2, num2 = 2
num1 = 3, num2 = 2
num2 = 3
从输入结论他们可以知道,num1和num2第一次自增输入结论一样,说明前自增和后自增都可以对变量进行加1。那么第二次输入就有点不同了,虽然都进行了自增,但是num1输入3而num2输入2,最后一次输入num2则是3。这是因为前自增先对变量进行加1后再采用,而后自增则先采用变量再进行加1操作。
自减操作符自增和自减法操作符演算过程一样,区别则是一个做加1操作另外一个做减1操作。
逗号操作符
首先他们看几段标识符
#include <stdio.h>
int main()
{
int num1 = 1, num2 = 2;
int s = 1 + (num2 = num1 + 1, num2 = num1 + 2);
printf(“s = %d\n“, s);
return 0;
}
这段标识符的输入结论是:
s = 4
从输出结论他们可以知道,逗号操作符是从左往右结合,先计算num2 = num1 + 1,此时num2 = 2,再计算num2 = num1 + 2,此时num2 = 3,最后取num2的最终值加1的结论赋值给s。