arc*_*ana 3 c printf
int main() { printf("%d %d",1,2,3,4,5); return 0; }
输出:1,2
int main() { printf("%d %d",(1,2,3,4,5)); return 0; }
输出:5,垃圾值
那么请解释为什么添加括号/括号会有所不同?
unw*_*ind 9
它有所不同,因为,(逗号)在C中有多个角色.
,
在第一种情况下,它用于分隔参数,因此您printf()使用6个参数调用.不仅仅需要,这可能本身就是一个问题.
printf()
在第二种情况下,括号内的逗号是"逗号运算符",它具有评估其左侧,忽略结果,然后评估并返回其右侧的效果.所以表达式(1,2,3,4,5)是一样的5.您正在printf()使用错误数量的参数调用未定义的行为.
(1,2,3,4,5)
5
括号改变了逗号的解释,从仅将参数分离为逗号运算符.
归档时间:
10 年,1 月 前
查看次数:
235 次
最近记录: