C语言 Day8
初始操作符2
~
1 | ~ 对一个数的二进制按位取反 |
对一个数的二进制按位取反
1 | int main() |
结果是-1
原因是按位取反是指将把内存中的0
和1
全部取反,并且整数在内存中储存的是补码
拿a=0
举例子
首先介绍一个整数的二进制表示的3
种情况
原码:是将二进制的最高位变成符号位,最高位为0则为正,反之为负
反码:就是将原码除符号位(最高位)剩下的的0和1全部反转
补码:在反码的基础上+1
回到例子
PS:正整数”三码合一“
— 和 ++
1 | -- 前置、后置-- |
1 | int main() |
结果是11 11
1 | int main() |
结果是10 11
—与++同理
强制类型转换
1 | int main() |
这种方式虽然可以出结果但会报错,因为a
原来是浮点数,强制转换会丢失浮点数之后数据
如果想要消除报错可以选择进行强制类型转换
1 | int main() |
关系操作符
1 | <= 小于等于 |
逻辑操作符
1 | && 逻辑与 |
计算机的逻辑用语,与高中数学的且、或的用法一致
逻辑与 都真为真,一假全假
逻辑或 都假为假,一真全真
1 | int main() |
结果为1
若
1 | int main() |
则结果为0
条件操作符
条件操作符也是一种三目操作符
1 | exp1 ? exp2 : exp3 |
使用逻辑是
当exp1成立时,exp2 进行计算,整个表达式的结果是exp2的结果
当exp1不成立时,exp3进行计算,整个表达式的结果是exp3的结果
1 | int main() |
用条件操作符就可以简化成
1 | int main() |
两者在表达效果上完全一致
逗号表达式
顾名思义,逗号隔开的一串表达式
1 | int main() |
结果是3
因为逗号表达式的执行逻辑是,从左向右依次计算,整个表达式的结果就是最后一个表达式的结果
下引用标操作符
1 | int main() |
arr[ ]中的[ ]就是下标引用操作符
函数调用操作符
1 | int main() |
printf后的( )就是函数调用操作符
不同的是,函数调用操作符可以存在多个操作数
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 qianbimo's blog!