设为首页 加入收藏

TOP

C语言编程入门之--第五章C语言基本运算和表达式-part2(二)
2019-08-14 00:07:24 】 浏览:131
Tags:语言编程 入门 第五 语言 基本 运算 表达式 -part2
.1,

优先级 运算符 结合律
1 后缀运算符:[]    ()    ·    ->    ++    --(类型名称){列表} 从左到右
2 一元运算符:++    --    !    ~    +    -    *    &    sizeof_Alignof 从右到左
3 类型转换运算符:(类型名称) 从右到左
4 乘除法运算符:*    /    % 从左到右
5 加减法运算符:+    - 从左到右
6 移位运算符:<<    >> 从左到右
7 关系运算符:<<=    >>= 从左到右
8 相等运算符:==    != 从左到右
9 位运算符 AND:& 从左到右
10 位运算符 XOR:^ 从左到右
11 位运算符 OR:| 从左到右
12 逻辑运算符 AND:&& 从左到右
13 逻辑运算符 OR:|| 从左到右
14 条件运算符:?: 从右到左
15 赋值运算符:
     =         +=        -=       *=       /=      %=       &=       ^=      |=   
   <<=      >>=
从右到左
16 逗号运算符:, 从左到右

  表5.1  运算符优先级规定表

  哇塞,运算符那么多,还有的没用过呢?记不住啊,我太难了,好累啊!

    没办法,这些都得记住,但不是现在马上全部记住,用着用着就能够记住的,相信我,先把这份表收藏,用的时候拿出来看,要死记硬背也行,看个人习惯怎么记忆了。

  请记住,C语言运算符遵循一个原则,优先级最高先运算,同级别的从左往右运算。

  比如,一个表达式 (x1+x2*x3)/(x4-x5+x6-x7)中,

  括号等级最高,所以先运算括号运算符,有两个括号运算符,所以这是同级别运算,先运算左边的括号,在左边的括号中(x1+x2*x3),有加法有乘法,先执行高等级的乘法,然后再执行加法。然后执行右边的括号运算里面的表达式(x4-x5+x6-x7),有加法有减法,是同级别的运算,所以先运算左边的减法再依次运算加法和减法,最终把两边运算的值进行除法计算即可。

   

5.2.3 表达式练习题之求平均数 

  要求:输入三个整数,求它们的平均值。简单吧,代码如下:

#include <stdio.h>

void main()
{
    int x1, x2, x3;
    int y;
    
    printf("please input three data: \n");
    
    scanf("%d, %d, %d", &x1, &x2, &x3);
    getchar();
    
    y = (x1 + x2 + x3)/3;
    
    printf("average y = %d\n", y);
}

  编译执行后,输入2,4,6得到结果:average y = 4。

  但是如果输入3,5,6得到的结果居然也是:average y = 4。打开计算器,计算出平均值为3.666666......

  这是由于计算机计算精度不同导致的,由于整型int只能精确到小数点左边,也就是int取值范围在-2,147,483,648 到 2,147,483,647,所以为了精度高一些,可以用上float类型,它的取值范围是1.2E-38 到 3.4E+38。

  改进后,代码如下:

#include <stdio.h>

void main()
{
    float x1, x2, x3;
    float y;
    
    printf("please input three data: \n");
    
    scanf("%f, %f, %f", &x1, &x2, &x3);
    getchar();
    
    y = (x1 + x2 + x3)/3;
    
    printf("average y = %f\n", y);
}

  这时候,再输入3,5,6得到的结果就是:average y = 4.666667。

  修改的部分有,1. 声明的类型由int改为float。

         2. scanf中,%d改为%f。

         3. printf中,%d改为%f。

  有了这些修改就能够支持精度高的浮点型float数据运算了。

 

5.2.4 表达式练习题之求个位数和万位数的和

  出这个题纯粹练习思维,题:输入一个5位数的整型,求个位数和万位数的和。

  希望读者自行编写完程序后,再看参考代码。

  大体思路:通过scanf输入一个5位数,比如输入的是32145,取个位5,取万位数3,求和。

  具体思路:

  1. 定义一个变量用来存放上面所说的32145,定义一个变量用来存放个位数,定义一个变量用来存放万位数,定义一个变量用来存放个位和万位的和,总共需要定义四个变量。

  2. 求个位数,需要用到取余表达式,即32145%10。打开草稿纸,如图5.10所示,计算32145除以10的余数为5,刚好就是获得的个位数,

图5.10  计算32145%10的结果

  3. 求万位数,只需要用到除法表达式,即32145/10000,要打开草稿纸算也行,笔者就不发图了。

    4. 计算个位数和万位数的和。代码如下:

#include <stdio.h>

void main()
{
    int data;
    int first, fifth;
    int getAddWorth;
    
    printf("please input a 5 digit data\n");
    scanf("%d", &data);
    getchar();
    
    first = data % 10;
    fifth = data / 10000;
    
    getAddWorth = first + fifth;

    printf("data = %d, first = %d, fifth = %d, getAddWorth = %d \n", data, first, fifth, getAddWorth);
}

  执行后,输入32145可得getAddWorth的值为8,正解!

  注意:变量命名也可以由大写字母和小

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇memcached源码分析一-slab 下一篇复习:C语言基础知识1

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目