精华内容
下载资源
问答
  • 最近一个同学在看java的代码问的一个关于C语言的问题,看着其实挺简单的,可是我也是好久没有碰C语言了当时就把...int a=4,b=2,c=3; int d=8; printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b=c),a==(b==c)); //system("pa

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">最近一个同学在看java的代码时问的一个关于C语言的问题,看着其实挺简单的,可是我也是好久没有碰C语言了当时就把我给难住了,后来又分析了一下,现在把它写出来</span>

    代码如下

    #include<stdio.h> 
    main()
    {
    int a=4,b=2,c=3;
    int d=8;
    printf("%d,%d,%d,%d\n",a=b=c,a=b==c,a==(b=c),a==(b==c));
    //system("pause"); 
    printf("%d,%d\n",++d,--d);
    
    printf("%d\n",5==3);
    /*这两个个表达式说明==判断语句输出的结果只有1或0; 
    */
    printf("%d",5==5); 
    return 1; 
    }  
    结果下图





    展开全文
  • C语言a=b==c的使用

    千次阅读 2021-02-08 11:26:49
    如果简化一下大概就是如标题所示a=b==c,其实现在看着也还是比较可爱的了,但是依稀记得第一次见,快挠破了头。 阐述a=b==c 观察结构,可以发现ab之间存在运算符=,那么同理bc之间肯定也是一个运算符,总不能...

    前言

    C语言有着许许多多的运算符,一不注意可能就见到个奇奇怪怪看不懂的东西,例如下面这个:
    set_result = AstPmmRestoreParam(kAstPmmAuthRoot) == 0;
    如果简化一下大概就是如标题所示a=b==c,其实现在看着也还是比较可爱的了,但是依稀记得第一次见时,快挠破了头。

    阐述a=b==c

    观察结构,可以发现a和b之间存在运算符=,那么同理b和c之间肯定也是一个运算符,总不能变出来个新品种吧。
    既然也是运算符,而且中间是连接的,就说明肯定是双等号运算符==,那就好分析了,这个表达式有两次运算。
    这个时候就涉及到了,运算符的优先级问题,而双等号==的优先级是大于单等号=的,所以这个式子是先进行b和c的==运算,然后结果与a再进行=运算,总结一下就是先看下b==c的结果,结果是1或者0,然后将这个值赋值给a。
    这就是a=b==c的含义,其实并没有想象中那么难。
    在C语言里,其实没有那么多奇奇怪怪的,遇见了,只要好好分析下就好了。
    毕竟C语言他能有什么坏心思呢。
    最后附上C语言运算符的优先级,来源于百科:

    https://baike.so.com/doc/6149729-6362919.html
    在这里插入图片描述

    展开全文
  • c语言a=b--<=a||a b!=c怎么算a=1,b=2,c=3,求计算过程以及计算后ab的值
  • 若int a = 0, b = 1, c = 2,则逻辑表达式a++ && b++ || (c -= 2)执行之后 a=1 ,b=1,c=0,表达式的值为0 分析如下: 逻辑表达式a++ && b++ || (c -= 2)执行 1、由于优先级&&与||一样,所以...

    若int a = 0, b = 1, c = 2,则逻辑表达式a++ && b++ || (c -= 2)执行之后
    a=1 ,b=1,c=0,表达式的值为0
    分析如下:
    逻辑表达式a++ && b++ || (c -= 2)执行时
    1、由于优先级&&与||一样,所以执行是先执行&&
    a++ && b++其中都是X++形式,所以是先取值再自加
    (1)故&&运算时取得值a=0因为a=0所以这个表达式就是0
    (2)&&后面的b++b不需要计算,程序不执行故b的值不变
    2、a++ && b++ || (c -= 2)可以化简为0|| (c -= 2)
    (1)(c -= 2)=0带入上式
    (2)0||(c -= 2)=0即逻辑表达式为0
    程序验证如下:

    #include<iostream>
    #include<stdlib.h>
    
    using namespace std;
    
    int main()
    {
        int a = 0, b = 1, c = 2;
        int flag = ((a++) && (b++)) || (c -= 2);
        cout << "((a++) && (b++)) || (c -= 2)=" << flag << endl;
        cout << "a=" << a << " b=" << b << " c=" << c;
        system("pause");
    }
    

    结果如下:
    在这里插入图片描述
    如果不能理解,有疑惑.认为b++在运算&&时取值为1要运算b++之后是2
    a++ && b++ || (c -= 2)换成a++ && b-- || (c -= 2)发现结果依旧不变
    程序如下:

    #include<iostream>
    #include<stdlib.h>
    
    using namespace std;
    
    int main()
    {
        int a = 0, b = 1, c = 2;
        int flag1 = ((a++) && b--) || (c -= 2);
        cout << "((a++) && b--) || (c -= 2)=" << flag1 << endl;
        cout << "a=" << a << " b=" << b << " c=" << c;
        system("pause");
    }
    

    结果如下:
    在这里插入图片描述
    当把a的值换成a=1,((a++) && b++) || (c -= 2)前面的值为1 时b的值就会有变化
    代码如下

    #include<iostream>
    #include<stdlib.h>
    
    using namespace std;
    
    int main()
    {
        int a = 1, b = 1, c = 2;
        int flag1 = ((a++) && b++) || (c -= 2);
        cout << "((a++) && b++) || (c -= 2)=" << flag1 << endl;
        cout << "a=" << a << " b=" << b << " c=" << c;
        system("pause");
    }
    

    结果如下:
    在这里插入图片描述
    2021年6月26日补充:
    在c语言中,&&与||有段路特性,解释如下:
    1、条件1&&条件2 如果条件1为假,也就是0,那么代码将不执行条件2,因为0与任何条件都是0
    2、条件1||条件2 如条件1的结果为真,也就是1,那么代码将不执行条件2,因为1或任何条件都是真

    展开全文
  • Integer a = 128;  Integer b = 128;  System.out.println(a==b);  Integer c = 1;  Integer d = 1;  System.out.println(c==d); 执行结果:false  true

            Integer a = 128;
            Integer b = 128;
            System.out.println(a==b);
            Integer c = 1;
            Integer d = 1;
            System.out.println(c==d);

    执行结果:false
                        true

    解释原因:

    类似String一样



    对于这样直接赋值的Integer 当值的范围在

    [-128,127] 时候 会不生成新的对象 直接把缓存中的对对象拿来用



    Integer a=128;Integer b=128

    这样的话就是false了

    可以看看Integer的源代码 里面有实现
    展开全文
  • 3-2=1=b a = a-b----&gt;3-1=2=a 方法二: a = a^b —&gt;001 010 011&gt;3 b =b^a —&gt;010 011 001&gt;1 a = a^b—&gt;011 001 010&gt;2 方法三: a,b = b,a —&gt;1,2=2,1 .....
  • 认清js中var a=b=1和var a=1,b=1的区别

    千次阅读 2018-10-16 13:56:51
    js中一次性定义多个变量的时候,可以用:var a=1,b=1这种中间用逗号隔开的方式,但有些时候为了省事,直接定义var a=b=1。那这两种写法方式最后效果是一样的吗?有没有什么区别呢?请大家看下面的范例: 1、用var a=...
  • C语言两个整数交换,a=b ,b=a

    千次阅读 2017-12-25 10:58:46
    #include int main() { int a = 5,b = 6,c; c = a; a = b; b = c; printf("A = %d,B = %d,",a,b); return 0; }
  • a=b++,c++和a=(b++,c++)的区别

    千次阅读 2019-08-25 16:56:27
    a=b++,c++ 相当于a=b++;c++; a=(b++,c++) 相当于a=c++;加括号才是逗号表达式
  • 执行 int x,a=2,b=3,c=4;x=++a+b+++c++;

    千次阅读 2013-05-03 23:55:54
    执行 int x,a=2,b=3,c=4;x=++a+b+++c++;后a的结果是?b的结果是? c的结果是? x的结果是? a=3,b=4,c=5,X=10 ++a是先加了a再计算 而b++是先计算后再加 所以bc的在进行加的时候没变 但其它本身的值又变了
  • 为什么Integer a=100,b=100时候a==b返回true,而Integer c=1000,d=1000时候c==d返回false Integer i =100实际在内部做了Integer i = Integer.valueOf(100)的操作。来看Integer.class源码这个方法的首先断言了...
  • Python中a,b=a,a+ba=b,b=a+b的区别

    千次阅读 2018-06-03 16:38:02
    最近学习Python的时候遇到的一个问题,问题还是早点解决为好,特此记录。#coding=gbk #a,b=b,a+b的情形 a=0 b=1 a,b=b,a+b #先计算第一个‘=’号右边的值,暂时不考虑左边的值,先看a,b初始...print(a,b) #输出1,1 ...
  • 解释在java中String a="a",b="a";a==b为什么返回true?
  • int a=2,b=4,c=6,x,y,q,p; y = ((x=a+b),(b+c)); q = (p=a+b),(b+c); printf ("%d,%d\n",x,y); printf ("%d,%d\n",p,q); return 0; } 逗号运算符的优先级要低于等于号, 所以在使用逗号运算符的时候外面要...
  • int a = 3, b = 4, c = 5, n, x, y, v; printf("Please enter number:"); scanf("%d", &n); switch(n){ case 1: v = a+b>c && b == c; break; case 2: v = a||b+c && b-c; break; ...
  • var a = b = 3; })();console.log("a defined? " + (typeof a !== 'undefined')); console.log("b defined? " + (typeof b !== 'undefined')); 由于 ab 都定义在函数的封闭范围内,并且都始于 var关键字,...
  • 目录一、问题的起源二、解释问题的方式工具原理一:预解析原理二:隐式全局变量原理三:两个变量同时指向一个对象,那么对这个对象的修改是同步三、拆解var a = b = constant的声明与赋值1. 利用预解析拆解var a=b=...
  • C语言数组a[b]=b[a]。。。。

    千次阅读 2013-09-26 13:55:09
    int a[5] = {1,2,3,4,5}; int b = 3; 发现 a[b]=*(a+b)=*(b+a)=b[a]; 利用指针运算交换律,感觉C的指针很灵活,在java中就不行。 官方讲解: A postfix expression followed by an expression in [ ] ...
  • 从键盘任意输入abc的值,编程计算并输出一元二次方程ax2+bx+c=0的根,当a=0,输出“该方程不是一元二次方程”,当a≠0,分b2−4ac>0、b2−4ac=0、b2−4ac<0三种情况计算并输出方程的根。 **输入格式...
  • 返回:贺老师课程教学链接 项目要求【项目2 - n=a!+b!+c!】求满足条件n=a!+b!+c!的所有三位数n并输出,其中a,b,c分别为n的百、十、个位数。[参考解答]解法1:n为3位数,n由100循环到999,每次循环,分离出百、十、...
  • 关于a=c++,b++和a=(c++,b++)区别

    千次阅读 2017-05-15 21:26:42
    a=c++,b++等价于a=c++和b++ a=(c++,b++)等价于a=b++,逗号表达式加括号的时候,最终结果是最右边的结果
  • 例题:请补充main函数,该函数的功能是:输出方程组a+b=52,a+2b=60的一组正整数解。本题的结果是a=44,b=8。 注意:仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。 代码如下: #include<...
  • #include&amp;amp;lt;stdio.h&amp;amp;gt; #include&amp;amp;lt;...void m1(double a,double b,double c);...void m2(double a,double b,double c);...void m3(double a,double b,double c.
  • 杭电ACM 2054:A == B ?

    千次阅读 2015-05-07 09:57:14
    原创作品 转载请注明出处http://blog.csdn.net/always2015/article/details/45556755尼玛,这道题刚看的时候觉得太简单了,一会写了几行判断相等的代码,而且直接用a==b判断,提交时候就傻逼了,怎么也AC不了。...
  • Integer a=100,b=200比较详解

    千次阅读 多人点赞 2019-02-24 13:38:00
    题记:前几天面试Java基础给来了个面试题Integer a=200,b=200;System.out.println(a==b);当时回答是false,后来面试官又来了一个Integer a=100,b=100;System.out.println(a==b);这个回答的也是false当时面试官笑笑说...
  • #include<stdio.h>... if((b*b*c*c+a*a*c*c==a*a*b*b) && (a+b+c<100)){ printf("A=%d, B=%d, C=%d\n", a, b, c); num++; } } } } printf("共有%d种组合。", num); return 0; }
  • 关于C语言a=a++与a=++a的研究

    千次阅读 2013-05-13 16:25:36
    今天逛论坛,发现有朋友对a++与++a的结果有争议,由于自己也不清楚,就决定反汇编一下,看看是什么原因,过程如下: 问题: int a=3; a=a++; 输出结果a=3 研究过程: 自己写了下源码:   反汇编...
  • /*输入三角形的三边长abc,计算三角形的面积area,area=sqrt(S*(S-a)*(S-b)*(S-c)),S=(a+b+c)/2;*/ #include <stdio.h> #include <conio.h> #include <math.h> int main(void) { double a,b...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,469,464
精华内容 2,187,785
关键字:

当a=3,b=2,c=1时