求大神指点C语言1||0&&0是1因为断路,但是0&&1||1为什么也是1,不会断路么?我用的是VC

作者&投稿:雪弦 (若有异议请与网页底部的电邮联系)
C语言问题:1&&0||1 的结果为多少,说明理由。~

由于&&的优先级比||高,所以先计算1&&0,由于&&运算符当两个操作数都不是0的时候才为1,所以1
&&
0的结果是0。接下来就该计算0
||
1。由于||运算符在两个操作数任意一个为非零时结果就是1,所以0
||
1的结果为1,整个表达式的结果就为1。

结果为1 。
&&的优先级比||要高。所以你不用看后面2个&&,就看前面一个||,因为1||X,所以不管||后面为1或0,结果都为1.

1||0&&0——因为&&的优先级比||高,所以1||0&&0等效为1||(0&&0),由于1已经为真,确定了整个表达式的值为1,所以||右边没有必要计算了(俗称‘短路’了)。
0&&1||1——同样因为&&的优先级比||高,所以0&&1||1被等效为(0&&1)||1,由于()中的结果是假,后面又是||,所以整个表达式的值并没有确定(||两边任意一边为1则为1),所以还要计算||右边的表达式。
这个所谓“短路”问题使很多初学者纠结。不能硬背啊,要看分表达式能否确定整个表达式的值,能确定就被“短路”了,否则就不能被短路。比如把0&&1||1这个表达改成1&&1||1,由于1&&1已经为真,||右边是真是假都左右不了整个表达式为1的事实了,所以表达式就被||“短路”了。

优先级是在短路之上的呀。&&比||优先级高。
1||0&&0就是1||(0&&0),嗯1||什么都是1,所以就是1,()里的什么东西都不用算了。
0&&1||1是(0&&1)||1,前面0&&1是0,0||什么,还得算后面的,然后就是0||1结果是1。
--------------------------------------------------------------------------------------


c语言不知道怎么改,求大神指点
include<stdio.h>int main(){int i,j,m,n;int max(int a[]);int min(int a[]);int max1(int a[][10],int k);int min1(int a[][10],int k);int a[10][10]={{4,5,6,1,2,3,7,8,9,10},{1,2,3,4,5,67,8,9,10},{5,4,3,2,1,},{11,...

C语言实验题 求大神指点
int);int main(){struct StudentInfo stu[STU_NUMBER];input(&stu[0],STU_NUMBER);average(&stu[0],STU_NUMBER); \/***输出学生信息***\/ int i;printf("学号\\t姓名\\t课程1\\t课程2\\t课程3\\t课程4\\t总成绩\\t平均成绩\\n");for (i=0;i<STU_NUMBER;...

求计算机大神帮忙指点一下,用C语言写一个顺序表的数据结构题_百度知 ...
include<stdio.h>#include<stdlib.h>_Bool isSorted(size_t arr[], size_t n){for (int i = n-1; i>0; i--){for (int j = 0; jarr[j + 1]) return 0;}}return 1;}void iterator(size_t *pa, size_t n){for (size_t i = 0; i<n; i++) printf("%u\\t", *(...

C语言编程问题。求大神指点
s需要赋初值, for的循环语句少了 }, 每一项的正负号是交替变化的,用变量sign交替改变正负号 \/\/计算1-1\/4+1\/7-1\/10+1\/13-1\/16+... 的前n项之和 include<stdio.h> void main(){ int i, j, n;float s=0,sign=1;printf("n=");scanf("%d", &n);for(i=1; i<=n; i+...

简单的c语言,大神仅需指点一下。求数组的最大数和最小数。进行调试的时...
include <stdio.h>#include <stdlib.h>#include #define N 5void max_min(int a[], int n, int* &max, int* &min);int main(void){int *max1, *min1;int i;int a[N];printf("please input %d number:", N);for (i = 0; i<N; i++)scanf("%d", &a[i]);\/\/赋值是传...

我写的C语言程序哪里错了,求大神指点?
1、i=0;i<1000改成i=2;i<=1000 2、第二个for之前增加一行:sum=0;3、a<500改为a<=i\/2 4、"%d"改为"%d "试一下,有什么问题请留言。

求c语言大神指点!按逆序输出一个整数,请将程序补充完整.
include<stdio.h> int reversr(int m){ int n;n= m%10 ; \/\/ 最后一位,以m=12345为例,此处为5 while(m>=10) \/\/ 第一次循环m=12345,第二次1234,第三次123,第四次12,第五次1(终止),总共四次循环 { n= n * 10 + (m\/10%10); \/\/第一次循环此处是50 + 4 = 54...

C语言布置了道题,做了一小半不会了,麻烦大神指点,可以说个方法也行...
for循环内用IF判定,如果是对角则输空格,否则输字母。

关于c语言指针的问题 如图,根据这些东西得出的值,我怎么越看越不知道...
1就是(*P)++来了 把*p的值加一 *p原来指向p0 就是0 加一后就是1了

求C语言方面的大神指点一下,为什么有时候写程序要自己先写一段点h...
因为.h文件中有很多函数,如果先不写.h文件,那么编译的时候会因为找不函数而报错。比如:include <stdio.h> \/\/printf函数在这个头文件中 int main(){ printf("hello\\n");} 如果不先写.h文件,因为运行到printf("hello\\n")的时候main函数还没现有printf这个函数,所以会报错,这样你应该明白了...

盐城市19667547189: 求大神指点C语言1||0&&0是1因为断路,但是0&&1||1为什么也是1,不会断路么?我用的是VC -
酆屠美得: 优先级是在短路之上的呀.&&比||优先级高.1||0&&0就是1||(0&&0),嗯1||什么都是1,所以就是1,()里的什么东西都不用算了.0&&1||1是(0&&1)||1,前面0&&1是0,0||什么,还得算后面的,然后就是0||1结果是1.--------------------------------------------------------------------------------------

盐城市19667547189: 请问C语言中,0&&0||1的值是多少啊 ? -
酆屠美得: “&&”(逻辑与)、"||"(逻辑或)是逻辑运算符. 同一等级的,从左到右结合运算,0&&0为假,即为0,0再与1相或0||1为真,即为1.

盐城市19667547189: c语言大神进,表达式1&&0Ⅱ1的值为什么是1 -
酆屠美得: 因逻辑与运算符优先级比逻辑或高, 故先计算1&&0,结果为0; 然后计算0逻辑或1,结果为1.

盐城市19667547189: C语言中,一下程序运行结果怎么是1呢,有点想不通,求各位高手指点 -
酆屠美得: 因为&&符号的优先级最低,所以结果要么是真(1),要么是假(0)

盐城市19667547189: C语言求大神!!~按位取反,0取反为什么是 - 1不是1? -
酆屠美得: 以16位int为例 0的二进制值是0000 0000 0000 0000按位取反结果是1111 1111 1111 1111而1的二进制值是0000 0000 0000 0001看出区别了吧.

盐城市19667547189: C语言的取反加一,取反就是0变1,1变0,可那加一是怎么算的,搞不懂,求大神解释? -
酆屠美得: 就是末尾加1啊,如果末尾是1的话加变为0,然后进阶啊,前面的数加1.

盐城市19667547189: C语言 IF条件语句中的 && || 用法 求大神详解 自己摸索了一下午 用法还是确定不下来 -
酆屠美得: 自左向右,以次判定 && 如果有一个为false,后面中止续判定 || 如果有一个为true, 后面中止续判定 age > 25 // 为true继续,false中止 subject == 1 // 为true继续,false中止 college == 3 // 为false继续,true中止 college == 1 // 结束

盐城市19667547189: 求大神指点第一点括号里的意思a&&b的那个 -
酆屠美得: C语言使用0代表逻辑假,非0代表逻辑真.&&是逻辑与运算符,只有两边同时为逻辑真时,结果才是逻辑真.对于a&&b这种表达式,如果a是逻辑假(0)的话,那不用计算b的值,就可以确定整个表达式的值为逻辑假了(同时为真,结果为真;有一个为假,结果就为假嘛).这就是编译器的一个优化了,只有当a是逻辑真(非0)的时候,再去计算b的值.这就是括号里面那句话的意思了.

盐城市19667547189: 求高手指点一下一道c语言题,判断一字符是否为数字字符,这个程序是否有错.万分感谢. -
酆屠美得: 楼主的代码这样改就对了..#include void main() { char a; printf("请输入一个字符:"); scanf("%c",&a); //这里掉了取地址符..if(a>=48 && a='0'&&aprintf("是数字字符\n"); // 加上换行符显得规范..else printf("不是数字字...

盐城市19667547189: C语言中,求1 到100 的和,希望大神指点.谢谢了 -
酆屠美得: #includeint main() { int i,sum = 0; for(i = 1;i <= 100;i++) { sum = sum + i; } printf("%d",sum); return 0; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网