user-0 提问: 逻辑运算   有点小问题，

回复:
user: user-1
content: scanf("%d,%d,%d",&a,&b,&c); // 给a和b赋值 你的输入格式里面带了逗号，输入也要带逗号  例如输入 3,4,5   m = a > b && a < c;   // 条件运算  如果a=5,b=3,c=6  输出结果应该是m=1  为什么是0 这种格式代码可读性不是很好，虽然高手知道运算符有限顺序，但是项目接手人不一定都是高手 建议m = ((a > b) && (a < c));  这样更明确些

user: user-2
content: 引用 3 楼 明天就会D 的回复:[quote=引用 1 楼 自信男孩 的回复:]输入的格式不对，因为scanf的""中每个输入之间是有,逗号的（注意逗号的中英文要和scanf中的保持一致）。  谢谢，不过，我刚刚又试试了 好像还是不对结果还是 m= 0[/quote] 就是输入带空格的原因啊 你输入5,3,6就可以了

user: user-3
content: int a = 2,b = 4,c = 6,x,y; y = (a+b),(b+c);结果是y=6，但整个逗号表达式的值是10，要想获取这个10，则应该写成 y=（a+b,b+c）;

user: user-3
content: #include<stdio.h> int main() {     int a = 0;int b = 0; int c = 0;  //定义2个变量     int m;  // 定义m变量     scanf("%d %d %d",&a,&b,&c); // 给a和b赋值     m = a > b && a < c;   // 条件运算  如果a=5,b=3,c=6  输出结果应该是m=1  为什么是0     printf("m = %d",m); //  输出 	return 0; }

user: user-0
content: 引用 7 楼 5250 的回复:[quote=引用 2 楼 明天就会D 的回复:]#include<stdio.h> int main() {   /* int a = 0,b = 0, c = 0;    int m = 0;    scanf("%d,%d,%d",&a,&b,&c);    m = (a + b),(c * a);    printf("m = %d",m);  */     int a = 2,b = 4,c = 6,x,y;     y = (a+b),(b+c);     printf("y = %d,x = %d\n",x,y);     return 0; } 运行结果y = 8,x = 6,有点懵，明明按照逗号表达式计算第二表达式为最终结果，a+b=6,b+c=10,为什么运行结果差这么远，，， 希望有路过的朋友，懂的话，帮忙解答一下，谢谢！ 我一个人自学看书，有些点还是理解不了，  逗号表达式需要加括号  即x=(p1,p2,p3) 你的程序改一下  y = （(a+b),(b+c));[/quote] 收到，我理解了，感谢！

user: user-0
content: 引用 6 楼 自信男孩 的回复:[quote=引用 2 楼 明天就会D 的回复:]#include<stdio.h> int main() {   /* int a = 0,b = 0, c = 0;    int m = 0;    scanf("%d,%d,%d",&a,&b,&c);    m = (a + b),(c * a);    printf("m = %d",m);  */     int a = 2,b = 4,c = 6,x,y;     y = (a+b),(b+c);     printf("y = %d,x = %d\n",x,yprintf("y = %d,x = %d\n",x,y);    return 0; } 运行结果y = 8,x = 6,有点懵，明明按照逗号表达式计算第二表达式为最终结果，a+b=6,b+c=10,为什么运行结果差这么远，，， 希望有路过的朋友，懂的话，帮忙解答一下，谢谢！ 我一个人自学看书，有些点还是理解不了，  这样的能对上号吗？能不蒙吗？  printf("y = %d,x = %d\n",x,y);  y=x的值，x = y的值[/quote]   我粗心大意了，自身本领不过关，结果导致运算结果不一样，感谢您的发现！

user: user-0
content: 引用 4 楼 深渊亦是鹏程万里 的回复:y = (a+b),(b+c);这一句逗号运算符左边为一个表达式，右边为一个表达式，y=(a+b)和（b+c）,所以y=6，如果是y = ((a+b),(b+c)); y=10,x由于是临时变量且没有赋初值，x在栈空间中，它的值是内存中的一个垃圾值    谢谢朋友，理解了

user: user-4
content: 引用 2 楼 明天就会D 的回复:#include<stdio.h> int main() {   /* int a = 0,b = 0, c = 0;    int m = 0;    scanf("%d,%d,%d",&a,&b,&c);    m = (a + b),(c * a);    printf("m = %d",m);  */     int a = 2,b = 4,c = 6,x,y;     y = (a+b),(b+c);     printf("y = %d,x = %d\n",x,y);     return 0; } 运行结果y = 8,x = 6,有点懵，明明按照逗号表达式计算第二表达式为最终结果，a+b=6,b+c=10,为什么运行结果差这么远，，， 希望有路过的朋友，懂的话，帮忙解答一下，谢谢！ 我一个人自学看书，有些点还是理解不了，  逗号表达式需要加括号  即x=(p1,p2,p3) 你的程序改一下  y = （(a+b),(b+c));

user: user-5
content: 引用 2 楼 明天就会D 的回复:#include<stdio.h> int main() {   /* int a = 0,b = 0, c = 0;    int m = 0;    scanf("%d,%d,%d",&a,&b,&c);    m = (a + b),(c * a);    printf("m = %d",m);  */     int a = 2,b = 4,c = 6,x,y;     y = (a+b),(b+c);     printf("y = %d,x = %d\n",x,yprintf("y = %d,x = %d\n",x,y);    return 0; } 运行结果y = 8,x = 6,有点懵，明明按照逗号表达式计算第二表达式为最终结果，a+b=6,b+c=10,为什么运行结果差这么远，，， 希望有路过的朋友，懂的话，帮忙解答一下，谢谢！ 我一个人自学看书，有些点还是理解不了，  这样的能对上号吗？能不蒙吗？  printf("y = %d,x = %d\n",x,y);  y=x的值，x = y的值

user: user-6
content: 楼主为啥不加上括号呢？？

user: user-6
content: y = (a+b),(b+c);这一句逗号运算符左边为一个表达式，右边为一个表达式，y=(a+b)和（b+c）,所以y=6，如果是y = ((a+b),(b+c)); y=10,x由于是临时变量且没有赋初值，x在栈空间中，它的值是内存中的一个垃圾值

user: user-0
content: 引用 1 楼 自信男孩 的回复:输入的格式不对，因为scanf的""中每个输入之间是有,逗号的（注意逗号的中英文要和scanf中的保持一致）。  谢谢，不过，我刚刚又试试了 好像还是不对结果还是 m= 0

user: user-0
content: #include<stdio.h> int main() {   /* int a = 0,b = 0, c = 0;    int m = 0;    scanf("%d,%d,%d",&a,&b,&c);    m = (a + b),(c * a);    printf("m = %d",m);  */     int a = 2,b = 4,c = 6,x,y;     y = (a+b),(b+c);     printf("y = %d,x = %d\n",x,y);     return 0; } 运行结果y = 8,x = 6,有点懵，明明按照逗号表达式计算第二表达式为最终结果，a+b=6,b+c=10,为什么运行结果差这么远，，， 希望有路过的朋友，懂的话，帮忙解答一下，谢谢！ 我一个人自学看书，有些点还是理解不了，

user: user-5
content: 输入的格式不对，因为scanf的""中每个输入之间是有,逗号的（注意逗号的中英文要和scanf中的保持一致）。