您的位置:首页 > 编程语言 > C语言/C++

学习笔记:c语言中词法陷阱

2015-07-24 00:47 316 查看
单个字符是独立的 有着自己特定的意义但是如果组合到一起就会有不同的用法 从而也产生了很多误区

1.‘=’和‘==’

if(x=y){} //先将y的值赋给x,再判断是否为0
if(x==y){}//判断x和y是否相等 相等为1 不等为0


2.’&’,’|’和’&&’,’||’

‘&’ 和’|’ 是位运算符

‘&&’和’||’是逻辑运算符

主要想强调逻辑运算符有“短路”的性质

int i = 1;
int j = 2;
if(i==1&&j=3)
// 运行之后 i=1  j=3 因为i==1为真 会继续运行j=3这个赋值语句
if(i==2&&j=3)
/*运行之后 i=2  j=2 因为i==2为假 所以程序短路不会继续执行 j还是原来的2*/


3.”贪心“法则

C语言中有单字符符号也有多字符符号

但是C语言对这个有一个简单的原则:每一个符号应该包含尽可能多的字符 处理这种问题的方法就是运用括号或者空格来区分

y=x/*p  /*p p指向除数 */(会以为是赋值语句 y=x 后面以为是注释)
y=x/(*p)  /*p p指向除数 */(y对*p取整)


4.八进制和十进制

八进制的数以0开头但我们正常理解045就是45的意思但是计算机会以八进制的方式来处理 所以不建议这样写
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: