社区
C语言
帖子详情
int i = (1 , 2) 是什么意思?
bborn
2008-01-21 06:56:28
不知道这样有什么意义
...全文
692
10
打赏
收藏
int i = (1 , 2) 是什么意思?
不知道这样有什么意义
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sunraiing9
2008-01-24
打赏
举报
回复
逗号表达式,返回最后一个值
星羽
2008-01-21
打赏
举报
回复
int a = (1, 2, 3, 4, 5);
a == 5
逗号表达式,返回最后一个值
我啃
2008-01-21
打赏
举报
回复
逗号运算符顺序执行每个分句,返回最后一个~
liqinghua1653
2008-01-21
打赏
举报
回复
C语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如:
3+5,6+8
称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为
表达式1,表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为14。又如,逗号表达式
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。
一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如(a=3*5,a*4),a+5 先计算出a的值等于15,再进行a*4的运算得60(但a值未变,仍为15),再进行a+5得20,即整个表达式的值为20。
逗号表达式的一般形式可以扩展为
表达式1,表达式2,表达式3……表达式n
它的值为表达式n的值。
逗号运算符是所有运算符中级别最低的。因此,下面两个表达式的作用是不同的:
① x=(a=3,6*3)
② x=a=3,6*a
第①个是一个赋值表达式,将一个逗号表达式的值赋给x,x的值等于18。第②个是逗号表达式,它包括一个赋值表达式和一个算术表达式,x的值为3。
其实,逗号表达式无非是把若干个表达式“串联”起来。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于循环语句(for语句)中.
请注意并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的。如
printf("%d,%d,%d",a,b,c);
上一行中的“a,b,c”并不是一个逗号表达式,它是printf函数的3个参数,参数间用逗号间隔。
如果改写为
printf("%d,%d,%d",(a,b,c),b,c);
则“(a,b,c)”是一个逗号表达式,它的值等于c的值。括弧内的逗号不是参数间的分隔符而是逗号运算符。括弧中的内容是一个整体,作为printf函数的一个参数。
C语言表达能力强,其中一个重要方面就在于它的表达式类型丰富,运算符功能强,因而c使用灵活,适应性强
wenjun1130
2008-01-21
打赏
举报
回复
逗号表达式 ,去最右边的值
liqinghua1653
2008-01-21
打赏
举报
回复
乍一看您可能以为这个语句有语法问题,其实它是完全正确的!首先运算逗号左边的子表达式,然后运算右边的子表达式.故而整个逗号表达式的值是2.
bborn
2008-01-21
打赏
举报
回复
to Kenmark
运行结果是这样的 能讲讲吗
我啃
2008-01-21
打赏
举报
回复
和
int i =2;
一样
p0303230
2008-01-21
打赏
举报
回复
逗号运算符
jpf2008
2008-01-21
打赏
举报
回复
可能是去最大公约数吧
int
*p1 = new
int
[10];
int
*p2 = new
int
[10](); 的区别
我的理解是
int
*p2 = new
int
[10]();申请了空间,而且进行了初始化
int
*p1 = new
int
[10];只申请空间,没有进行初始化原因:对于一些结构体,我们可以看到()往往表示构造函数,
int
是基本类型算初始化吧理由:你可以测试输出两种的值你会发现p1的值未知,而p2清零了
Java中通俗易懂的i=i++
Java 中运行以下代码 :
int
i = 0; i = i++; System.out.pr
int
ln("i的值是 : " + i); 根据我们通常所知道的后自增先使用后增加的道理 , i++ 在使用后i自身会增加一个数值 , 初始值为 0 时 , 自增后就是 1 , 那么输出的结果应该是1 , 但实际上这题的结果却是 0 : i的值是 : 0 这是因为 JVM 在处理i = i++;时 , 会建立一个临时变量来接收 i++ 的值 , 然后返回这个临时变量的值 , 返回的值再被等号左..
如何理解
int
i=1;i=i++;
如何理解
int
i=1;i=i++; 1、引入两个概念:局部变量表和操作数栈 栈帧(Stack Frame): 是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息。第一个方法从调用开始到执行完成,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过...
C 语言面试题 —
int
i [ 4 ]={ i [ 2 ]=2 }
目录 文章目录目录题目 题目 #include <stdio.h>
int
main(void) {
int
i[4] = {i[2] = 2}; pr
int
f("%d %d %d %d\n", i[0], i[1], i[2], i[3]); return 0; } 本题考察的是 Sequence Po
int
(序列点)问题。即
int
i[4] = {i[...
Java 中
int
i = 0; i = i ++;为什么i还等于0
看到过的一个说法: 对语句进行拆解 左值i先将值赋给temp,然后自加,最后temp赋值给i; 在Java中的确是这么做的,具体步骤如下 注:本文解释只适合Java。 实际执行步骤 编译后代码的解释,参考 https://blog.csdn.net/xialei199023/article/details/76383013 先定义如下一个类: public class Test{ void te...
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章