巩固C
回头重新复习巩固C时候发现了几个比较有趣的程序,算是补上了一些知识漏洞吧,稍微提一下。
1.1关于优先级
x=y>2
由于>运算符的优先级大于=
所以这行代码等同于
x=(y>2)
所以如果y>2,那么y>2的值为TRUE,然后把1赋给x;反之把0赋给x。
1.2关于while
慢慢习惯变量在判断条件中的形式
while(flag--)
1.3两者类似点
重点都在于C对于判断TRUE—>1;FALSE—>0 。因此能够利用这点去优化while的结构。
2.1后自增的理解
有这样一段代码
int i = 1;
while ( i++ < 3 );
printf("%d", i );
这行代码有两个坑——第一个是while后面的“;”,第二个是判断条件。
首先是while后的“;” 这使while的执行语句为空,也就是printf是故意缩进的,它不是while的执行语句。实际上和下面的代码等价。
int i = 1;
while ( i++ < 3 )
continue;
printf("%d", i );
第二个是自增问题:
……i = 2 —> 条件为真 —> i = 3 —> 条件为假 —> i = 4
所以最后输出的是一个4
2.2后自增的理解代码
int plus(int& i)
{
int temp = i;
i++;
return temp;
}
3后记
又水了-_-||