zoukankan      html  css  js  c++  java
  • C语言算术运算符

    C语言基本算数运算符如下表:

    名称符号说明
    加法运算符 + 双目运算符,即应有两个量参与加法运算。如a+b,4+8等。具有右结合性。
    减法运算符 - 双目运算符。但“-”也可作负值运算符,此时为单目运算,如-x,-5等具有左结合性。
    乘法运算符 * 双目运算符,具有左结合性。
    除法运算符 / 双目运算符,具有左结合性。参与运算量均为整型时,结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。
    求余运算符(模运算符) % 双目运算符,具有左结合性。要求参与运算的量均为整型,不能应用于float或double类型。 求余运算的结果等于两数相除后的余数,整除时结果为0。


    双目运算符+和-具有相同的优先级,它们的优先级比运算符*、/和%的优先级低,而运算符*、/和%的优先级又比单目运算符 +(正号) 和 -(负号) 的优先级低。

    1 #include<stdio.h>
    2 int main(void){
    3     printf("
    
    %d,%d
    ",20/7,-20/7);
    4     printf("%f,%f
    ",20.0/7,-20.0/7);
    5     return 0;
    6 }

    本例中,20/7,-20/7的结果均为整型,小数全部舍去。而20.0/7和-20.0/7由于有实数参与运算,因此结果也为实型。

    #include<stdio.h>
    int main(void){
        printf("%d
    ",100%3);
        return 0;
    }

    本例输出100除以3所得的余数1。

    自增、自减运算符

    自增1运算符记为“++”,其功能是使变量的值自增1;自减1运算符记为“--”,其功能是使变量值自减1。

    自增1,自减1运算符均为单目运算,都具有右结合性。可有以下几种形式:

    • ++i:i自增1后再参与其它运算。
    • --i:i自减1后再参与其它运算。
    • i++:i参与运算后,i的值再自增1。
    • i--:i参与运算后,i的值再自减1。


    在理解和使用上容易出错的是i++和i--。 特别是当它们出在较复杂的表达式或语句中时,常常难于弄清,因此应仔细分析。

    #include<stdio.h>
    int main(void){
        int i=8;
        printf("%d
    ",++i);
        printf("%d
    ",--i);
        printf("%d
    ",i++);
        printf("%d
    ",i--);
        printf("%d
    ",-i++);
        printf("%d
    ",-i--);
        return 0;
    }

    i的初值为8,第4行i加1后输出故为9;第5行减1后输出故为8;第6行输出i为8之后再加1(为9);第7行输出i为9之后再减1(为8) ;第8行输出-8之后再加1(为9),第9行输出-9之后再减1(为8)。

    1 #include<stdio.h>
    2 int main(void){
    3     int i=5,j=5,p,q;
    4     p=(i++)+(i++)+(i++);
    5     q=(++j)+(++j)+(++j);
    6     printf("p=%d,q=%d,i=%d,j=%d",p,q,i,j);
    7     return 0;
    8 }

    这个程序中,对P=(i++)+(i++)+(i++)应理解为三个i相加,故P值为15。然后i再自增1三次相当于加3故i的最后值为8。而对于q 的值则不然,q=(++j)+(++j)+(++j)应理解为j先自增1,再参与运算,由于j自增1三次后值为8,三个8相加的和为24,j 的最后值仍为8。

    对于 p=(i++)+(i++)+(i++),先计算 (i++)+(i++),因为是“后自加”,等价于 5+5,结果为10;然后计算 10+(i++),等价于 10+5,结果为 15。
    对于 q=(++j)+(++j)+(++j),先计算 (++j)+(++j),因为是“前自加”,要先计算两次 ++j,此时 j=7,然后相加,相当于 7+7,结果为14;然后计算 14+(++j),相当于 14+8,结果为22。

  • 相关阅读:
    Get distinct count of rows in the DataSet
    单引号双引号的html转义符
    PETS Public English Test System
    Code 39 basics (39条形码原理)
    Index was outside the bounds of the array ,LocalReport.Render
    Thread was being aborted Errors
    Reportviewer Error: ASP.NET session has expired
    ReportDataSource 值不在预期的范围内
    .NET/FCL 2.0在Serialization方面的增强
    Perl像C一样强大,像awk、sed等脚本描述语言一样方便。
  • 原文地址:https://www.cnblogs.com/huxiaowei/p/3950079.html
Copyright © 2011-2022 走看看