逗号操作符

不能用逗号操作符将两个声明组合起来,这是因为声明已经将逗号用于其他用途-----分割列表中的变量。例如:

int j = 0,i = 3;

到目前为止,逗号操作符最常见的用途是将两个或更多的表达式放到一个for循环表达式中。不过C++还为这个操作符提供了另外两个特性。首先,它确保先计算第一个表达式,然后计算第二个表达式(换句话说,逗号操作符是一个顺序点)。如下所示的表达式是安全的:

i = 20,j = 2 * i;//i set to 20,j set to 40

其次,C++规定,逗号表达式的值是第二部分的值。例如,上述表达式的值为40,因为j = 2 * i的值为40.

在所有的操作符中,逗号操作符的优先级是最低的。例如,下面的语句:

cata = 17,240;

被解释为:

(cats = 17),240;

也就是说,将cats设置为17,240不起作用。不过,由于括号的优先级最高,下面的表达式:

cats = (17,240);

将把cats设置为240----逗号右侧的表达式。

注意在声明一个变量并初始化的时候不能用逗号操作符将两个初值分开,例如:

int a = 1,2;//invalid,编译不过

而赋值的时候则可以,例如:

int a;

a = 1,2;//则是合法的

时间: 2024-12-27 23:28:13

逗号操作符的相关文章

第39课 逗号操作符的分析

1. 逗号操作符 (1)逗号表达式用于将多个子表达式连接为一个表达式 (2)逗号表达式的值为最后一个子表达式的值 (3)逗号表达式的前N-1个子表达式可以没有返回值 (4)逗号表达式按照从左向右的顺序计算每个子表达式的值 exp1,exp2,exp3,…,expN; [实例分析]逗号表达式的示例 #include <iostream> using namespace std; void func(int i) { cout << "func(): i = " &

switch_case,&amp;&amp;,||,条件操作符和逗号操作符,循环语句

一.switch-case switch-case语句主要用在多分支条件的环境中,在这种环境中使用if语句会存在烦琐且效率不高的弊端. switch(expression) { case const expression1: .... case const expression2; ... default: ... } 在执行过程中,expression的值会与每个case的值比较,实现switch语句的功能.关键字case和它所关联的值被称作case标号.每个case标号的值都必须是一个整形常

JavaScript 逗号操作符

让我们从一个有趣的微博开始吧. 末尾的c是优先级最低的逗号操作符.逗号操作符是操作符优先级的最后一行,并且很少有文章记录,它隐藏着它的锋芒.它可能不是JavaScript强势操作符,但是我喜欢它.它简单.优雅并且你应该让它成为你的朋友.所以,我们开始吧--你需要更多了解JavaScript这个害羞英雄. 它是做什么的? 逗号操作符评估它的操作数(从左到右)并返回第二个操作数的值.(MDC) var a = (7, 5); a; //5 var x, y, z; x = (y=1, z=4); x

从头认识java-2.6 逗号操作符

这一章节我们来聊一下逗号操作符. 注意:不是逗号分割符. package com.ray.ch03; public class Test { public static void main(String[] args) { for (int i = 0, j = 0; i < 5 && j < 4; i++, j += 2) { System.out.println("i:" + i + " j:" + j); } } } 输出: i:0

逗号操作符重载分析(三十三)

我们之前在 C 语言中也学习过了逗号表达式,那么我们就先来再次重新看看逗号表达式.逗号操作符(,)可以构成逗号表达式,逗号表达式用于将多个子表达式连接为一个表达式,它的值为最后一个子表达式的值.逗号表达式中的前 N-1 个子表达式可以没有返回值,它是按照从左向右的顺序计算每个子表达式的值.例如:exp1,exp2,exp3,...,expN 下来我们以代码为例进行逗号表达式的说明 #include <iostream> #include <string> using namespa

【C++ Primer每日一刷之十二】 箭头操作符,条件操作符,sizeof操作符,逗号,优先级

5.6. 箭头操作符 C++ 语言为包含点操作符和解引用操作符的表达式提供了一个同义词:箭头操作符(->).点操作符(第 1.5.2 节)用于获取类类型对象的成员: item1.same_isbn(item2); // run thesame_isbn member of item1 如果有一个指向 Sales_item 对象的指针(或迭代器),则在使用点操作符 前,需对该指针(或迭代器)进行解引用: Sales_item *sp = &item1; (*sp).same_isbn(item

20.C++- &amp;&amp;,||逻辑重载操作符的缺陷、,逗号重载操作符的分析

大家,都知道"&&","||"拥有"短路"功能 比如a=(0&&b) :  由于第一个操作数为0,所以不会去判断b的内容,直接执行a=0 比如a=(-100||b): 由于-100不为0,所以不会去判断b的内容,直接执行a=1 可以参考下面代码: 运行打印: 并没有调用func(100)函数,同样"||"逻辑操作符也具有拥有"短路"功能 ||"就不会具备"

高程(3):操作符、for、for...in循环、break/continue/return语句、函数等

1.关系操作符 注意点:1)比较操作数是两个字符串,是比较字符串的字符编码值. 如:"a" > "b"  返回 false:"a" > "B"  返回 true; 2)[特别注意]如果是比较两个数字类型的字符串,也是按照字符编码值比较. 如:"256" > "6"  返回 false; 2.相等==和全等=== 区别:相等比较有隐式类型转换,而全等则没有类型和数据都要相

重拾C之语句,操作符和表达式

1.C中的if语句和其他语言的If语句中,只存在一个差别,c并不具备布尔类型,而是用整型来代替,这样,括号中的式子可以是任何可以产生整型结果的表达式,c中的关系操作符的结果是整型0或1 2.break和continue语句的任何一条如果出现在嵌套的循环内部,它只是对最内层的循环起作用,你无法使用break或continue语句影响外层循环的执行 3.空语句 while((ch = getchar())!=EOF && ch != '\n') ; 这种形式清楚地显示了循环体是空的,而不至于使