C++中cout语句里逗号","与运算符"<<"的作用区别是什么?
问题原因解释
核心差异是两段代码使用的运算符不同,C++中运算符优先级规则导致了执行逻辑完全不同:
运算符优先级说明
- 流输出运算符
<<的优先级远高于逗号运算符,, - 逗号运算符的作用是依次执行左右两边的表达式,丢弃前一个表达式的返回值,最终返回最后一个表达式的结果,且不会触发流输出操作。
第一段代码执行逻辑
第一段使用<<链式调用:
cout << "hello " << i << " end" ;
<<是std::ostream类重载的运算符,每次调用完成后都会返回cout对象本身的引用,因此可以连续调用后续的<<,依次把"hello "、变量i的值、" end"输出到标准流,最终得到完整输出。
第二段代码执行逻辑
第二段将<<替换成了逗号:
cout << "hello " , i , " end" ;
因为<<优先级高于逗号,编译器会把整行拆分为三个独立的表达式按顺序执行:
- 执行
cout << "hello ":输出hello,返回cout对象,被逗号运算符丢弃 - 执行
i:仅读取变量i的取值,无任何输出操作,取值被丢弃 - 执行
" end":仅获取字符串字面量的内存地址,无任何输出操作,该地址作为整个逗号表达式的最终返回值,未被使用
因此最终只有第一个表达式产生输出,后续内容不会被打印。
内容的提问来源于stack exchange,提问作者user16521673
相关产品推荐
相关产品推荐

