C语言的一道题目!达人指教啊!

来源:百度知道 编辑:UC知道 时间:2024/05/04 15:19:27
设INT I=2,J=3,K=4,A=4,B=5,C=3请问执行表达式
(A=I<J)&&(B=J>K)&&(C=I,J,K)后,A,B,C的值分别是多少!

麻烦列出程序哈!我列的老说我POSSIBLY INCORRECT ASSIGNMENT
这个是我列的,请问是什么地方出了问题?
#include "stdio.h"
void main()
{
int i=2,j=3,k=4,a=4,b=5,c=3;
printf("%d%d%d",(a=i<j)&&(b=j>k)&&(c=i,j,k),a,b,c);
}
还有我用的是TC!

1、你的程序printf("%d%d%d"少了一个%d。
#include "stdio.h"
void main()
{
int i=2,j=3,k=4,a=4,b=5,c=3;
printf("%d %d %d %d",(a=i<j)&&(b=j>k)&&(c=i,j,k),a,b,c);
}

2、处理器在作条件表达式时,会进行优化,只要指已经算出来就会停止。所以(a=i<j)&&(b=j>k)&&(c=i,j,k)只进行了(a=i<j)&&(b=j>k)两个计算就可以确定表达式为假,最后(c=i,j,k)就没有运算。

3、关系表达式的优先级高于算术表达式,所以a=i<j相当于a=(i<j),b=j>k相当于b=(j>k),所以a=1,b=0;

4、所以输出就是:
0 1 0 3

printf("%d,%d,%d,%d",(a=i<j)&&(b=j>k)&&(c=i,j,k),a,b,c);
你少写了个%d