是合法的,前者的主要错误只是在于变量的定义和使用现后顺序存在问题。
逻辑运算只在乎最后的结果是不是0 如果是0就是假 否则统一认为是真并将结果作为1
运算顺序总是十分复杂且难以记忆的,总结就是 优先后++ -- 然后是前++ 前--
再然后是 乘除取余 然后加减 然后大小比较 然后等于不等于比较 再然后逻辑运算(其中位逻辑运算大于普通的逻辑运算 且最高的是~ 依次是& ^ | ),最后是赋值运算和其他的高级赋值运算。
补码等于反码+1
按位与 &
按位或 |
按位取反 ~
按位异或 ^
如果i与j进行按位与,但是两个数字的位数不同,i为long j为int,那么会在右端对齐的同时依据j的符号在左侧补上合适的0或者1
异或 指的是 如果两个位相同则为0 如果不同则为1
按位与将特定位置置为0 或则是置为1 异或则可以将特定位取反
因为与1异或 则一定会与原来的只相反 而与0异或则保持原数值不变
位逻辑运算符号针对二进制位,其只可以运用在整型上,
此处指出位逻辑运算符号和逻辑运算符号的区别:
前者针对二进制位,后者针对表达式,前者只可以运用在整形上,且需要计算具体数值,后者只需要判断真假。前者的两个运算对象可以交换,后者由于运算的不完全性,一旦运算出确定结果就不会再向下运算,因此后者运算对象交换会可能会导致程序后续结果输出不同。
两天早上摸鱼,统一睡到大天亮。
重修C语言之从60~86页第二章测试题
这两天摸鱼比较严重 昨天抽空上了个黄金 今天看了半天大江大河 希望后面几天能加把劲吧 我也是加把劲骑士了。
三目运算符号的运算顺序为从右到左
P60的 例题2-2 是一个很好的例子 首先三目运算符号先算表达式1 然后才会考虑计算表达式2或表达式3 这将导致最后i的值不同,同时注意 i>=j>=k的运算结果。
神奇的逗号表达式 i=35,i2; 该语句i=15 但是整个表达式的值为30 即
j=(i=3 * 5,i * 2)的结果j=30,i=15;
float类型数据,即使是两个float类型数据相加,仍然都将其转化为double类型进行运算。
数据的自动类型转换,其中是针对两个操作数逐步逐步转换的,而不是一次性统一转换,也就是6.