逻辑运算
#include <stdio.h>int main()
{
int a = 3, b = 3;
(a = 2) && (b = 5);
printf("a = %d, b = %d\n", a, b);
(a = 1) || (b = 5);
printf("a = %d, b = %d\n", a, b);
return 0;
}
为什么这样输出是
a=2,b=5
a=2,b=5
不应该是第一个先进行判断吗(a=2)不成立,所以不应该保留a=3吗,
如果仅仅是进行赋值的话,那刚开始定义a=3,b=3又有什么用呢 林小某 发表于 2021-2-20 17:03
那这样的话,最开始给ab赋值有什么意义呢
直接int a, b;
不可以吗
可以啊,
这题目的目的不就是迷惑你
助你理解的吗?
先像一个初值,然后用一堆花里胡哨的语句变换,最后看你理解不理解的了{:10_277:}
a=2是赋值,不是判断
==才是判断 两点:
第一、赋值语句的值就是所赋的值
第二、逻辑语句短路原则:A&&B,当A为false时,后面的B不执行
C||D,当C为true时,后面的D不执行 =是赋值的意思,你直接把a赋值为了2,把b赋值为了5 昨非 发表于 2021-2-20 15:52
两点:
第一、赋值语句的值就是所赋的值
第二、逻辑语句短路原则:A&&B,当A为false时,后面的B不执行
那这样的话,最开始给ab赋值有什么意义呢
直接int a, b;
不可以吗 李京 发表于 2021-2-20 15:45
a=2是赋值,不是判断
==才是判断
那刚开始的赋值有什么用 林小某 发表于 2021-2-20 17:04
那刚开始的赋值有什么用
赋值啊
页:
[1]