#include "stdio.h"
#include "conio.h"
void main()
{ int a=1;
printf("%d\n",a=3*a,3*a);
getch();
}
输出结果为
3
但是曾怡说这个3是3*a的值。
我试着改了一下:
#include "stdio.h"
#include "conio.h"
void main()
{ int a=1;
printf("%d\n",a=3*a,4*a);
getch();
}
按照曾怡的说法,结果应为4。但是实际结果还是 3
????是讲错了么?还是结果与编译器有关。
----------------解决方案--------------------------------------------------------
只有一个%d 却要输出两个a
那么肯定输出的是
a=3*a
----------------解决方案--------------------------------------------------------
以上只是个人见解。。。。。等楼下的高手回答。。。顺便学习
----------------解决方案--------------------------------------------------------
应该与编译器无关,本人认为曾怡说的是错的,我认为第一个程序中的3是a=3*a的值,虽然大多数编译器调用参数的时候是从右开始调用,但这个地方是严格根据格式控制来的,即一对一,自左向右,比如运行如下程序
#include "stdio.h"
#include "conio.h"
void main()
{ int a=1;
printf("%d,%d,%d\n",a=3*a,4*a);
getch();
}
得到的结果肯定是第三个结果为一个不可预料的值,而不是第一个
----------------解决方案--------------------------------------------------------
PC大哥解释的8错。。。。学习一下
----------------解决方案--------------------------------------------------------
#include "conio.h"
借LZ帖子问个很菜的问题。。。。
这个头文件是干嘛的
----------------解决方案--------------------------------------------------------
#include "stdio.h"
#include "conio.h"
void main()
{ int a=1;
printf("%d\n",a=3*a,3*a);//只给A重新赋了一次值,即A=3.但输出的是表达式的最后一个,即3*A=9.
getch();
}
输出结果为
3
但是曾怡说这个3是3*a的值。
我试着改了一下:
#include "stdio.h"
#include "conio.h"
void main()
{ int a=1;
printf("%d\n",a=3*a,4*a);
getch();
}
按照曾怡的说法,结果应为4。但是实际结果还是 3
????是讲错了么?还是结果与编译器有关。
----------------解决方案--------------------------------------------------------
nuciewth,一般编译器调用函数的时候是从右向左调用的
----------------解决方案--------------------------------------------------------
你去输出这个知道了
printf("%d,%d\n",a=3*a,3*a);//结果是3,3,而不是3,9
----------------解决方案--------------------------------------------------------
哦
[此贴子已经被作者于2007-4-13 11:06:41编辑过]
----------------解决方案--------------------------------------------------------