您的位置:澳门新葡8455最新网站 > 编程教学 > C语言基础4,条件运算符

C语言基础4,条件运算符

发布时间:2019-12-31 04:27编辑:编程教学浏览(148)

    • C# 语句-条件语句-if-else
    • C# 语句-条件语句-条件运算符
    • C# 语句-条件语句-switch 语句
    • C# 语句-循环语句-for 语句
    • C# 语句-循环语句-foreach in 语句
    • C# 语句-循环语句-while 语句
    • C# 语句-循环语句-do 语句

    iOS开采 -- C语言根基4(基本语句和运算符)


    基本语句

    C语言的基本语句跟Java中的差十分少,所以,这里只是简短地提一下

    循环语句(do while、while、for)

    标准语句(if 、if-else、switch)

    goto语句

    ?: 条件实在应该称为条件运算符,归属运算符生机勃勃类,由于它抱有推断天性,所以这里和规格语句归为生龙活虎类传授,其语法是:

    骨干运算

    微管理机的着力本事便是测算,所以一门语言的估算技能极其珍视。C语言之所以手眼通天,相当大原因在于它有刚劲的精兵简政本领。C语言大器晚成共有34种运算符,个中的绝大繁多运算符跟在Java中的用法是大器晚成律的。下边做贰个简便介绍。

    风流倜傥、算术运算符

    ①. 加法:+ 还足以代表正号

    ②. 减法:- 还足以象征负号

    ③. 乘法:* 非数学意义上的X

    ④. 除法:/  注意1/2的值为0而非0.5

    ⑤. 取余(模运算):四个整数相除之后的余数(注意两侧都必需是整数,带符号只和左值有关)

    注意点:

    ①. Int a=10.8;//数据精度错过警报。结果为10——自动类型变换

    ②. Int a=(int卡塔尔(قطر‎10.8;//无警示。把10.8强迫转变为整型——免强类型转变

    ③. Double c=10.6+6//结果为16.600000。在计算机中,拿七个数值进行演算,则运算符两侧的数值必要类型相似,假使分化则举行自动类型升高。即把6转为6.000000后再参加运算。

    ④. 出席运算的八个数是如何项目,那么其结果正是怎么项目。int a=10/3结出为3,double b=10/3结果为3.000000;double c=10.0/3结果为3.333333。必要准确值能够开展强逼类型转变。double d=(double卡塔尔国3/2把3转变为double类型变为3.000000,之后2进展自动类型提高调换为2.000000踏足运算,结果为1.500000。也得以写成3/(double卡塔尔2。这种地方供给小心与对完全进行压迫调换的界别 double e=(doubleState of Qatar(3/2卡塔尔国是先总结3/2的值为1再对1进展抑遏类型转变,结果为1.000000。

    二、关系运算符

    <  小于运算符

    <=  小于等于运算符

    >  大于运算符

    >=  大于等于运算符

    ==  等于运算符

    !=  不对等运算符

    * 关系运算的结果创设就为"真"(比方5>=4),不树立则为"假"(比方5<4)

    * 在Java中,关系运算的结果为"真"就回到true,"假"则赶回false,用boolean类型的变量来抽取

    boolean b1 = 5 > 4; // true

    boolean b2 = 5 < 4; // false

    C语言中绝非boolean类型

    * 在C语言中,关系运算的结果为"真"就回来1,"假"就重回0

    int a1 = 5 > 4; // 1

    int a2 = 5 < 4; // 0

    * 还需注意的是,在C语言中,任何非0值都为"真",唯有0值才为"假"

    就此上面包车型大巴做法是对的:

    int a = 10;

    if (a) {

    printf("条件建构"卡塔尔国;

    } else {

    printf("条件不创制"State of Qatar;

    }

    因为a不为0,所认为"真",输出结果是:

    图片 1

    假定在Java中,编写翻译器直接报错了,因为if的括号(State of Qatar中只好放boolean类型的值。

    就这样推算,下边包车型客车写法也是没有错:

    int a = 10;

    if (a = 0) {

    printf("条件创建"卡塔尔国;

    } else {

    printf("条件不创制"卡塔尔(قطر‎;

    }

    上述代码是一心合理的,编写翻译器不会报错,只是个警报而已。因为a为0,所认为"假",输出结果是:

    图片 2

    诸有此类看来,C语言如同比Java方便广大,其实有非常大的骗局在此边:

    借让你本来是想剖断a是不是为0,那么本应该写if (a == 0State of Qatar,若您误写成了if (a = 0卡塔尔,那将是大器晚成件十一分骇人据悉的事务,因为编写翻译器又不报错,那样的BUG就难找了。因而,像a==0那样的表明式,最佳写成0==a,若您误写成0=a,编写翻译器会直接报错的。

    // 不推荐

    if (a == 0) {

    }

    // 推荐

    if (0 == a) {

    }

    * 在C语言中,能够不保留关系运算的结果

    于是,上面包车型大巴写法是官方的:

    1 int a = 10;

    2 a > 10;

    3 a == 0;

    借使是在Java中,第2、3行编写翻译器会一向报错,但在C编写翻译器看来是合法的,只是个警报。

    于是,这里又是叁个陷阱,借使你的原意是想给a赋值为0,那么本应有写a = 0; ,若您误写成a == 0; ,那将又是一个相当难找的BUG,因为编写翻译器根本不会报错。在1995年的时候,这么些BUG差一些让生龙活虎桩价值二〇〇一万比索的硬件产品生意告吹,因为假诺这些BUG不化解,那么些产物就不能够不奇怪使用。

    三、逻辑运算符

    &&  逻辑与运算符

    ||  逻辑或运算符

    !  逻辑非运算符

    逻辑运算的结果也只有四个:创设就为"真",重返1;不创作育为"假",再次来到0

    ①. 与  &&  条件1&&条件2 独有的百般条件1和法规2都成立刻,才为真不然为假。

    ②. 或  ||    条件1 ||条件2  当条件1或规范2中有二个起家时就为真,都不树立刻为假。

    ③. 非  !  !条件  取反

    在乎:逻辑运算符在展开演算时,只要可以规定整体的真假性,前面包车型地铁法则就不再举办而是径直忽视。

    Int a=b=10;

    Int c=(a>5)&&(++b>=11);//此时a==10,b==11,c==1

    Int c=(a<5)&&(++b>=11);//此时a==10,b==10,c==0

    唤醒:在扩充逻辑运算时,若是搞不清楚各类符号的优先级,能够利用()。

    四、赋值运算符

    1.简便的赋值运算符 = :int a = 5;

    2.复合赋值运算符

    +=  加赋值运算符。如a += 3+1,等价于 a = a +(3+1)

    -=  减赋值运算符。如a -= 3+1,等价于 a = a -(3+1)

    *=  乘赋值运算符。如a *= 3+1,等价于 a = a *(3+1)

    /=  除赋值运算符。如a /= 3+1,等价于 a = a /(3+1)

    %=  取余赋值运算符。如a %= 3+1,等价于 a = a %(3+1)

    五、自增运算符和自减运算符

    ++  自增运算符。如a++,++a,都等价于a = a+1

    --  自减运算符。如a--,--a,都等价于a = a-1

    六、逗号运算符和逗号表明式

    * 逗号运算符首要用来连接表明式,比如:

    1 int a = 9;

    2 int b = 10;

    3

    4 a = a+1 , b = 3*4;

    * 用逗号运算符连接起来的表明式称为逗号表明式,它的平常情势为:

    表达式1, 表达式2, … …, 表达式n

    逗号表明式的运算进度是:从左到右的逐一,先总括表明式1,接着计算表明式2,...,最终总括表达式n

    * 整个逗号表明式的值是终极三个表明式的值

    int a = 2;

    int b = 0;

    int c;

    c = (++a, a *= 2, b = a * 5);

    printf("c = %d", c);

    ++a的结果为3,a *= 2的结果为6,b = a * 5的结果为30。因而,输出结果为:

    图片 3

    那边要介怀的是,左边的表明式是有用括号(卡塔尔包住的,假诺不用括号包住,也正是:

    c = ++a, a *= 2, b = a * 5;

    printf("c = %d", c);

    出口结果将为:

    图片 4

    因为c = ++a也归于逗号表明式的一片段,面前面包车型客车a *= 2以及b = a * 5是相互独立的

    七、条件运算符和原则表明式

    事实上正是三目运算符,平时格局为:表明式1 ? 表明式2 : 表明式3

    int a = (b > 5) ? 10 : 9;

    八、sizeof

    * sizeof能够用来计量一个变量也许两个常量、风度翩翩种数据类型所占的内存字节数。

    int size = sizeof(10);

    printf("10所占的字节数:%d", size卡塔尔国;

    出口结果:

    图片 5

    10是int类型的数额,在64bit编写翻译器情形下,int类型要求占用4个字节

    * sizeof一共有3种形式

    sizeof( 变量常量 )

    sizeof(10);

    char c = 'a';

    sizeof(c);

    sizeof  变量常量

    sizeof 10;

    char c = 'a';

    sizeof c;

    sizeof( 数据类型 State of Qatar

    sizeof(float);

    小心,不得以写成sizeof float;

    condition ? first_expression : second_expression;

    它的意味是当 condition 为 true 时,再次来到 first_expression,不然重回second_expression。

     

    些微参照他事他说加以侦察书上说 ?: 等价于如下语句:

    if (condition)
    {
        first_expression;
    }
    else
    {
        second_expression;
    }

    骨子里不是的,因为上述 if 语句中八个表明式都未有重回值。

     

    int n = (1>3) ? 1 : 3;

    尽管上述示范有一些粗俗,因为 1 肯定不会超过 3,但它是二个整机准确的 ?: 示例。

    其余,上述括号能够毫不,只是为了更利于阅读,以至为了减小更改条件时形成的错误,这里加了括号。

     

    int m = 3;
    int n = (m*2 > 5) ? m : 5;

    n 是有一点点吧?3 要么 6,应该是 3,能够见见尽管 m 在尺度中被乘以 2,但并不曾赋值给 m,也便是说 m 的值并未有得到改观。int n = ((m=m*2卡塔尔 > 5State of Qatar ? m : 5; 那样正是 6 了。

     

    规范运算符为右联运算符

    a ? b : c ? d : e

    等价于

    a ? b : (c ? d : e)

    而不是

    (a ? b : c) ? d : e

    而其运算顺序是从左到右,所以下述示例的结果是 2,并非 3。

    int m = 3;
    int n = (m=m*2)>7 ? 1 : m>5 ? 2 : 3;

    • C# 语句-条件语句-if-else
    • C# 语句-条件语句-条件运算符
    • C# 语句-条件语句-switch 语句
    • C# 语句-循环语句-for 语句
    • C# 语句-循环语句-foreach in 语句
    • C# 语句-循环语句-while 语句
    • C# 语句-循环语句-do 语句

    本文由澳门新葡8455最新网站发布于编程教学,转载请注明出处:C语言基础4,条件运算符

    关键词:

上一篇:条件语句,循环语句

下一篇:循环语句