需要注意的知识点:
对于取余运算符,结果的符号和%左边的那一个相一致。
Ex:5%8 余数是5
-5%3 余数是 –2
5%-3 余数是 2
在一些编译中,有些程序是按照一定规则自动完成的,不需要我们操作。
'A' + 1 + 0.5 左侧三个数相加,首先会将A转成int类型,即为65,再算65+0.5时,会将65转换成double类型
得到最后的结果66.5. 数据参加运算前要进行下列转换: char ,short->int ,float -> double ;混合运算时数据 类型由低级-->高级:int,unsigned,long,double。 以上操作被称为隐式转换。
符号的优先级在这儿就不再累述。
自增自减是我们用的很多的一个运算,i++;i--;++i;--i;在进行算术运算的时候,要区别windows下和Linux,对于 Windows来说,程序运行会将所有的++i(--i),先一步进行运算,再进行整个式子的运算,最后再执行i++(i- -);例如,int i = 8 ; y= (++i) + (i++) + (++i),Windows下算法为10+10+10=30,Linux下算法为 9+9+10=28。楼主起初猜想可能是数据没有被刷新导致i的值有时候是没有变化的。就像昨天那个缓存区的问 题一样,没有刷新,打印出来的值才会一样。其实,不同的编译器对于式子的编译时不一样,导致最后的结 果不一样。在java中编译器对于i =i++,相当于temp = i ; i = i+1 ; i = temp。
对于switch语句,后面接的或者结果必须是数字或者字符。
附sizeof()括号中的无论是什么,都不会被编译,在这句命令,只会转成相应的类型。
对于像if一样的判断表达式,只有0才是假,所有非0的都为真。