首页 > 编程知识 正文

逗号运算符的运算规则,逗号表达式的运算法则

时间:2023-05-03 06:57:18 阅读:120479 作者:4840

逗号表达式c语言提供特殊运算符,逗号运算符,优先级最低,连接两个或多个表达式,从左到右逐个计算表达式,整个表达式的值就是最后一个表达式的值。 例如,(3) 5、6 )被称为逗号式,其求解过程先为式1,后为式2,式整体的值为式2的值,例如,(3) 5、6 )的值为14; a=(a=35,a4 )的值为60。 其中) a=35,a4的值为60,a的值在逗号表达式中一直为15,最后在逗号表达式中赋值为60,a的值最终为60。

说明式1、式2、式3、式n逗号式的要领。

(1)逗号公式的运算过程是从左向右逐个计算公式。

)2)逗号表达式作为一个整体,其值是最后一个表达式(即表达式n )的值。

(3)逗号运算符的优先级在所有运算符中最低。

例题公式本身并不难,经常和赋值运算符一起考试,看看学生对这两个知识点的理解和考生的观察是否细心。 主题:下一个程序的输出结果如下。

主() )

{

int x、y、z;

x=1;

y=1;

z=x,y,y;

printf('%d、%d、%dn )、x、y、z );

}

[ a ] 2,3,3 [ b ] 2,3,2 [ c ] 2,3,1 [ d ] 1,1,1

分析:

x和y的值经过自我增加后分别变为2和3,d可以排除。 剩下的三个选择是什么?

(x、y、y )实际上是) 1、1、3 )如果整个逗号表达式的值看起来是3,请选择a。

(x、y、y )实际上是) 1、2、2 )如果整个逗号表达式的值看起来是2,请选择b。

但是,这是错误的。 这里还有赋值运算符。 赋值运算符的优先级为14,但逗号表达式的优先级为15。 也就是说,上式需要等价于这种结合。 (z=x ),y,y; 这样写,答案很清楚,二、三、一

正确答案选择c。

PS :据我的统计,这种类型的主题错误率超过了70%。

相关问题例题1:(a=3、b=5、b =a、c=b* 5),求逗号公式的值?

答案: 40。 前两个公式只是赋值,从第三个开始计算,b=a,即b=b a,即b=5 3,b=8,求出最后的公式,c=b5=85=40。 由于逗号公式的值是最后一个公式的值,所以逗号公式整体的值为40,其他各变量的最后的值依次为(a )

例题2:在定义为x和y为双精度型的情况下,x=1,y=x 3/2的值为a(1b )2c (2.0 d ) 2.5

分析:因为此表达式是逗号表达式,所以首先计算x=1,将结果变量x的值设置为1.0,然后计算y=x 3/2。 因此,变量y的值为2.0。 此运算过程可以除以本主题的“整数除法注意事项”——整数,然后用舍入法取整数部分。 在这种情况下,请注意表达式y=x 3/2的值等于变量,最后,整个逗号表达式的值必须等于最后一个表达式的值2.0,因此正确答案是c )。

例题3:t为双精度型时,公式t=1、t 5、t的值为

a(1b ) 6.0 c (2.0 d ) 1.0

分析: d这个问题的公式也是逗号公式,运算过程与例题1相同。 另外,这里的第2个公式(t 5)没有改变变量t的值,所以对公式整体的运算结果没有任何影响。 ) t的值保持为1.0,最后的式) t的值为变量t的自增加运算前的值1.0,因此整个式的值为1.0。

例如,运行以下程序:

int a,b;

B=(A=1,a 1,a );

printf('%d、%dn )、a、b );

输出打印:

二,一

例题4 :有以下函数调用语句

func(REC1,rec2 rec3,) rec4,rec5 );

此函数调用语句中包含的实际参数数为

a )3 B )4 C )5 D )存在语法错误

分析:在a语言中,函数调用时的实参与实参之间用逗号分隔。 因此,本题函数调用语句包含三个实参,其中第一个实参为rec1,第二个实参为rec2 rec3,第三个实参为rec4、REC5]。 这里的第三个实参是逗号式,根据逗号式的运算规则,第三个实参是

例题5 :以下函数调用语句fun(ab,) x,y ),fun ) nk,d,) ) a,b ) ); 这个函数调用语句中的实参的数量是a ) 3

b )4 C )5 D ) 6的正确答案应该是a )。

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