当前位置: 代码迷 >> C语言 >> 曾怡讲的谭浩强教程中的一个错误?
  详细解决方案

曾怡讲的谭浩强教程中的一个错误?

热度:91   发布时间:2007-04-13 11:17:02.0
以下是引用PcrazyC在2007-4-13 11:02:29的发言:
nuciewth,一般编译器调用函数的时候是从右向左调用的

说的是一般编译器是这样.
#include "stdio.h"
#include "conio.h"

int main()
{
int a=1;
printf("%d\n",(a=3*a,3*a));
//getch();
return 0;
}
是我理解错了,不能把输出列表看成一个整体的表达式.不过还是得小心上面的这个例子.


----------------解决方案--------------------------------------------------------
又是参数列表中的参数分隔符和逗号运算符的问题
----------------解决方案--------------------------------------------------------
y一楼的说法有错误 他是“,”号表达试应自输出最后一个的结国 应是 "a*3"
----------------解决方案--------------------------------------------------------
printf("%d\n",a=3*a,3*a);中的(a=3*a,3*a)属于逗号表达式吗 ?

----------------解决方案--------------------------------------------------------
以下是引用吕玄远在2007-4-13 16:12:52的发言:
printf("%d\n",a=3*a,3*a);中的(a=3*a,3*a)属于逗号表达式吗 ?

应该不属于吧?


----------------解决方案--------------------------------------------------------
如果是这样printf("%d\n",(a=3*a,3*a));的话,括号里面的“,“就是逗号运算符,如果是printf("%d\n",a=3*a,3*a);的话,这里的“,”就是参数分隔符
----------------解决方案--------------------------------------------------------
谭版的也似较简单啊,好多的C东西都没有提到,比如图形、颜色等
----------------解决方案--------------------------------------------------------
这里逗号不能按逗号表达式来看 PcrazyC解释的对
int a=1;
a=3*a,4*a,5*a; //这样的才可以,即单独先运算

而这里的是printf()里的输出格式 应该是一一对应的 %d对应 a=3*a 后面的3*a不参加,因为没有格式与其对应
----------------解决方案--------------------------------------------------------
按 曾怡说这个3是3*a的值
他是把 printf("%d\n",a=3*a,3*a);中的(a=3*a,3*a)当逗号运算了

但这里不能把他当逗号运算,只输出第一个值

所以 曾怡 说法有误
----------------解决方案--------------------------------------------------------
回复:(PcrazyC)如果是这样printf(
哦 ,原来如此!谢谢
----------------解决方案--------------------------------------------------------
  相关解决方案