算数运算问题
#include <stdio.h>void main()
{
int a=15,b=15,c=15,d=15,q,p;
q=a%3 && a%5 || a++>++b;
p=c++>++d || c%3 && c%5;
printf("q=%dp=%d \n",q,p);
}
结果是: q=0p=1
为什么两个运算结果不同?运算的过程是怎么样的? q=a%3 && a%5 || a++>++b;
q=15%3 && 15%5 || 15 > 16
q=0 && 0 || 0
q=0 || 0
q=0
p=c++>++d || c%3 && c%5;
p=15 > 16 || 16%3 && 16%5
p=0 || 1 && 1
p=0 || 1
p=1 本帖最后由 傻眼貓咪 于 2021-10-29 09:35 编辑
运算符优先级:
运算符 ++ % > 或 < && || =
优先级 2 3 6 11 12 14
你的代码:a = 15, b = 15, c = 15, d = 15
q = a%3 && a%5 || a++ > ++b;
q = 15%3 && 15%5 || 15++ > ++15; // 这里最优先级是 ++。先处理 ++b(注:这里的 ++ 在右边,最后处理)
q = 0 && 0 || 15++ > 16; // 这里最优先级是 %。先处理 a%3 和 a%5
q = 0 && 0 || 0(false); // 这里最优先级是 >。先处理 16 > b++
q = 0 || 0(false); // 这里最优先级是 &&。先处理 0 && 0
q = 0; // 这里最优先级是 ||。先处理 0 || 0
p = c++ > ++d || c%3 && c%5;
p = 15++ > ++15 || 15%3 && 15%5;
p = 15++ > 16 || 15%3 && 15%5;
p = 0 || 16%3 && 16%5; // 这里和上面不同的是(++ 在 || 左边,先执行 ++)
p = 0 || 1 && 1;
p = 1;
页:
[1]