摘要:
其一般形式为: 变量=表达式; 赋值语句的功能和特点都与赋值表达式相同。 它是程序中使用最多的语句之一。 在赋值语句的使用中需要注意: 1.由于在赋值符“=”右边的表达式也可以又是一个赋值表达式,因此,下述形式 变量=(变量=表达式); 是成立的,从而形成嵌套的情形。其展开之后的一般形式为: 变量=变量=…=表达式; 例如: a=b=c=d=e=5;按照赋值运算符的右接合性,因此实际上等效于: e... 阅读全文
摘要:
嗷嗷的话:这都是一些细枝末节的东西,我想不做编译器的话,大部分都很难碰到。研究学习这些只是出于对C语言一种偏执狂。 写出来是为了找到和我一样的偏执狂。 在随后的的文章中,首先我写一写191种undefined behavior。不一定是对的,只是我自己的理解。参考的标准是C99.undefined behavior简单来说就是,如果你的程序违反了C标准中某些准则,那么具体会发生什么,C标准没有定义,也就说得到任何奇怪的结果,都是有可能的。比如说整数溢出就是一个undefined behavior。 unspecified behavior简单来说就是,C标准提供了多种可选方案,具体选择哪一个并 阅读全文
摘要:
一.副作用(side effect) 表达式有两种功能:每个表达式都产生一个值( value ),同时可能包含副作用( side effect )。副作用是指改变了某些变量的值。 如: 1:20 //这个表达式的值是20;它没有副作用,因为它没有改变任何变量的值。 2:x=5 // 这个表达式的值是5;它有一个副作用,因为它改变了变量x的值。 3:x=y++ // 这个表达示有两个副作用,因为改变了两个变量的值。 4:x=x++ // 这个表达式也有两个副作用,因为变量x的值发生了两次改变。二.求值顺序点 表达式求值规则的核心在于 顺序点( sequence point ) [ C99 6.5 阅读全文