逗号运算符:,允许对两个语句进行分组,其中有一个是预期的。

expression , expression

备注

逗号运算符具有从左向右的关联性。 由逗号分隔的两个表达式将从左向右进行计算。 始终计算左操作数,并且在计算右操作数之前将完成所有副作用。

在某些上下文(如函数参数列表)中,逗号可用作分隔符。 不要将该逗号用作分隔符与将其用作运算符的情况混淆;这两种用法完全不同。

考虑表达式

e1 , e2

该表达式的类型和值是 e2 的类型和值;e1 的计算结果将被丢弃。 如果右操作数是左值,则结果为左值。

在通常将逗号用作分隔符的方案中(例如,在函数或聚合初始值设定项的实参中),逗号运算符及其操作数必须包含在括号中。 例如:

func_one( x, y + 2, z );

func_two( (x--, y + 2), z );

在上面的对 func_one 的函数调用中,会传递以逗号分隔的三个参数:x、y + 2 和 z。 在对 func_two 的函数调用中,圆括号强制编译器将第一个逗号解释为顺序计算运算符。 此函数调用将两个参数传递给 func_two。 第一个参数是顺序计算运算 (x--, y + 2) 的结果,具有表达式 y + 2 的值和类型;第二个参数为 z。

示例

// cpp_comma_operator.cpp

#include

int main () {

int i = 10, b = 20, c= 30;

i = b, c;

printf("%i\n", i);

i = (b, c);

printf("%i\n", i);

}

20

30

条件运算符:? :语法

expression ? expression : expression

备注

条件运算符 (? :) 是一个三元运算符(采用三个操作数)。条件运算符按以下方式运行:

第一个操作数隐式转换为 bool。计算该操作数,并在继续前完成所有副作用。

如果第一个操作数的计算结果为 true (1),则计算第二个操作数。

如果第一个操作数的计算结果为 false (0),则计算第三个操作数。

条件运算符的结果是操作数(无论是第二个还是第三个)的计算结果。只有最后两个操作数之一在条件表达式中计算。

条件表达式具有从右到左的关联性。第一个操作数必须是整数或指针类型。以下规则适用于第二个和第三个操作数:

如果两个操作数是相同的类型,则结果也是该类型。

如果两个操作数都是算术或枚举类型,则执行常用算术转换(在算术转换中有述)来将它们转换为通用类型。

如果两个操作数都是指针类型,或者一个是指针类型,另一个是计算结果为 0 的常量表达式,则执行指针转换来将它们转换为通用类型。

如果两个操作数都是引用类型,则执行引用转换来将它们转换为通用类型。

如果两个操作数都是 void 类型,则通用类型是 void 类型。

如果两个操作数是相同的用户定义类型,则通用类型也是该类型。

如果操作数是不同的类型,而且至少有一个操作数是用户定义类型,则使用语言规则来确定通用类型。(请参阅下面的警告。)

前面列表中没有的第二个和第三个操作数的任意组合都是非法的。结果的类型是通用类型,如果第二个和第三个操作数是同一类型且都是左值,则结果为左值。

System_CAPS_warning警告

如果第二个和第三个操作数的类型不相同,则会按 C++ 标准中的指定调用复杂类型转换规则。这些转换可能会导致意外行为,包括构造和析构临时对象。为此,我们强烈建议:(1) 避免将用户定义的类型用作带条件运算符的操作数;(2) 如果确实要使用用户定义的类型,务必将每个操作数显式转换为通用类型。

// expre_Expressions_with_the_Conditional_Operator.cpp

// compile with: /EHsc

// Demonstrate conditional operator

#include

using namespace std;

int main() {

int i = 1, j = 2;

cout << ( i > j ? i : j ) << " is greater." << endl;

}

c语言编程中的逗号与结果,C++编程中逗号运算符和条件运算符的使用方法讲解...相关推荐

  1. .net调用c++方法时如何释放c++中分配的内存_C/C++编程笔记:C语言编程知识要点总结!大一C语言知识点(全)...

    一.C语言程序的构成 与C++.Java相比,C语言其实很简单,但却非常重要.因为它是C++.Java的基础.不把C语言基础打扎实,很难成为程序员高手. 1.C语言的结构 先通过一个简单的例子,把C语 ...

  2. C语言编程>第二十三周 ③ 下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序;然后把第三字符插入

    例题:下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序.插入法的基本算法是:先对字符串中的头两个元素进行排序:然后把第三字符插入到前两个字符中,插入后前三个字 ...

  3. C语言编程>第二十周 ② 下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和b[0]中的数对调、次最大数和b[1]中的数对调。

    例题:下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和b[0]中的数对调.次最大数和b[1]中的数对调. 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构. ...

  4. C语言编程>第二十五周 ① 给定程序中,函数fun的功能是:在形参s所指字符串中的每个非数字字符之后插入一个“*”号。

    例题:给定程序中,函数fun的功能是:在形参s所指字符串中的每个非数字字符之后插入一个"*"号. 例如,形参s所指的字符串为:albc45sdtg56f,则执行结果为:a*1b*c ...

  5. C语言编程>第十八周 ⑧ 给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。

    例题:给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列. 注意:请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句. 代码如 ...

  6. C语言编程>第二十五周 ② 下列程序中,函数fun的功能是:将大写字母转换为对应小写字母之后的第五个字母,若为小写字母为v~z,使小写字母的值减21,转换后的小写字母作为函数值返回。

    例题:下列程序中,函数fun的功能是:将大写字母转换为对应小写字母之后的第五个字母,若为小写字母为v-z,使小写字母的值减21,转换后的小写字母作为函数值返回. 例如,若形参是字母A,则转换为小写字母 ...

  7. C 语言 某人在国外留学,不熟悉当地的天气预报中的华氏温度值,请编程按每隔10°输出0°到300°之间的华氏温度的对照表,方便他对照查找

    某人在国外留学,不熟悉当地的天气预报中的华氏温度值,请编程按每隔10°输出0°到300°之间的华氏温度的对照表,方便他对照查找.已知华氏和摄氏温度的转换公式为:C = 5 / 9 X (F - 32) ...

  8. plcst语言编程教程_PLC ST语言编程之我的心得-专业自动化论坛-中国工控网论坛...

    以前编程都是习惯用梯形图,每次编运算程序,都得写很多条运算程序.调试且不说,就光重复使用就得复制好几遍,还要一遍一遍的改寄存器地址,很是麻烦.一次偶然的机会,我用到了一款PLC可以使用ST 语言编程的 ...

  9. python中表示嵌套语句快_Python编程(8)——if语句的嵌套,语言,程序设计,8if

    if语句的嵌套 1 if语句嵌套 if语句嵌套指的是if语句内部包含if语句,其格式如下: if 条件表达式1: 代码块1 if 条件表达式2: 代码块2 上述if语句嵌套的格式中,先判断外层if语句 ...

  10. c语言自学的论坛,C语言入门课程:C君带你玩编程

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 课程简介 课程面向对计算机编程感兴趣的学习者,可以零基础.无门槛地学习.教学团队使用各种富媒体手段,力求以通识.形象的展示方式诠释生涩的知识要点,在讲授过 ...

最新文章

  1. 2022-2028年中国清水混凝土行业供需策略分析及市场供需预测报告
  2. java同时输入输出buf_java输入输出流小细节
  3. DeepLearning:CNN网络学习之LetNet-5解读(论文+分析+代码)
  4. 大象喝水c语言程序,实现大象喝水(c语言)
  5. Note cancel request的实现原理
  6. 强化学习学习总结(二)——QLearning算法更新和思维决策
  7. C++实现双向循环链表
  8. 绝对地址、相对地址、/、./、../之间的区别
  9. 快速非支配排序算法流程
  10. QQ和360大战的这场戏我的看法
  11. python模拟硬件实现btb和tomasulo算法
  12. Java - java代码实现ip归属地查询,调用百度ip地址查询,局域网也能查询到位置
  13. Uva 11552 Fewest Flops
  14. Verilog语言注意事项
  15. instagram分享_存档instagram帐户正在教被忘记的历史
  16. 绝地求生全军出击服务器维护中,绝地求生全军出击卡住了进不去游戏解决办法...
  17. reflection removal
  18. unity基础知识----unity界面菜单翻译
  19. AST实战|免安装一键还原ob混淆详细使用教程
  20. Adobe Premiere Pro 2023导入音乐没有声音,并且提示“MME设备内部错误”

热门文章

  1. ubuntu下amd超频工具_AMD CPU怎么超频?AMD锐龙平台内存与CPU超频图文教程
  2. 遇到的算法题--02(斗牛)
  3. webrtc音频QOS方法四(音频接收端NACK流程实现)
  4. 定点补码加减法运算_定点整数的加减法
  5. 个人youtube视频观看历史分析
  6. android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@
  7. 【Python技巧】字典
  8. 设计一个几何图形的面积计算器,希望这个计算器可以计算圆和矩形等图形的面积
  9. 7个黑科技搜索网站,啥都能搜到!
  10. 第四章 春夏秋冬,二十四节气