语法"陷阱"
2.1 函数声明
if (flags & (FLAG != 0) )
2.2 C 语言运算符优先级:记住的最重要的两点是:
1.任何一个逻辑运算符的优先级低于任何一个关系运算符
2.移位运算符的优先级比算术运算符还要低,但比关系运算符要高
例子:
while (c = getc(in) != EOF)
putc(c, out)
在 while 表达式中,c 首先被赋值函数 getc(in)的返回值,然后 EOF 比较是否达到文件尾以便决定是否终止了循环。但是 赋值运算符优先级低于任何一个比较运算符,故
while ((c = getc(in) ) != EOF)
putc(c,out)
2.3 注意语句结束标志的分号;
if(x[i] > y[i]);
big = x[i];
表示啥也没咋执行,就已经运行了 if (x[i] > y[i]);
if (x[i] > big)
big = x[i]
表示进行判断,然后运行了赋值语句执行
if( n < 3)
return
logrec.date = x[0];
logrec.time = x[1];
logrec.code = x[2];
此处的 return 语句后面遗落了一个分号,然而这段代码仍然会顺利通过,编译并且不报错,
if (n < 3)
return logrec.date = x[0];
logrec.time = x[1];
logrec.code = x[2];
struct logrec {
int date;
int time;
int code;
}
main()
{
...
}
评论