首页 > 编程知识 正文

逗号运算符的运算规则,比较逗号运算符条件运算

时间:2023-05-06 00:28:04 阅读:251062 作者:2770

在C语言中逗号运算符可以将两个表达式连接起来

int n = 3+5, 6+ 10; // 此时 n = 16 ,

称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为 表达式1, 表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5, 6+ 10”的值为16。

例子 : a=3*5,a*4, 注意重点 : 逗号运算符优先度最低,比赋值运算符低。
对此表达式的求解,读者可能会有两种不同的理解:一种认为“3*5,a*4” 是一个逗号表达式,先求出此逗号表达式的值, 如果a的原值为3,则逗号表达式的值为12,将12赋给a, 因此最后a的值为12。另一种认为:“a=3*5”是一个赋值表达式”,“a*4”是另一个表达式,二者用逗号相连,构成一个逗号表达式。这两者哪一个对呢?
赋值运算符的优先级别高于逗号运算符, 因此应先求解a=3*5(也就是把“a=3*5”作为一个表达式)。经计算和赋值后得到a的值为15,然后求解a*4,得60。整个逗号表达式的值为60

下面在将两个例子:

x = (a = 3, 6 * 3);x = a = 3, 6 * a; 是一个赋值表达式,将一个逗号表达式的值赋给x,x的值等于18。包括一个赋值表达式和一个算术表达式,x的值为3。

下面用一个程序看看

#include <iostream>using namespace std;int main(int argc, char** argv){int a = 1, b = 2, c = 3;cout << (a, b, c) << b << c << endl; // 323// 逗号运算符 优先级最小int x = (a = 3, 6 * 3);cout << x << endl; // 18 return 0;}

另外附上我的github仓库:https://github.com/acelj/Notes
分享关于C++基础知识,智能指针,内存四区, 数据结构和算法,linux, mysql,redis等等。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。