我的c语言学习记录(蓝桥)————运算符和数据转换

本文详细介绍了C语言中的运算符,包括基本的算术运算符、自增自减运算符以及不同类型数据间的混合运算。特别强调了%运算符只能用于整数,以及自增自减运算符的使用细节。同时,文章讨论了数据类型转换的过程,并给出了混合运算的示例。此外,还探讨了强制类型转换和字符数据的输入输出,以及涉及数据输入输出的`scanf()`和`printf()`函数的使用。最后,提出了两个习题和一个挑战,分别是字符替换、圆柱体属性计算和摄氏温度转华氏温度的程序实现。
摘要由CSDN通过智能技术生成

我的c语言学习记录(蓝桥)————三

基本的算数运算符

常用的算术运算符表:

  • x + y:将 x 与 y 相加
  • x - y:将 x 与 y 相减
  • x * y:将 x 与 y 相乘
  • x / y:x 除以 y
  • x % y:求 x 除以 y 的余数

注意

  1. x/y 中,两个实数相除的结果是双精度实数,两个整数相除的结果为整数。如 5/3 的结果为 1,舍去小数部分。
  2. % 运算符要求参加运算的对象为整数,结果也是整数。如 7%3,结果为 1,除了%以外的运算符的操作数都可以是任何算数类型。

下面我们举例说明上注意事项。

创建 5-1.c 文件并输入以下代码:

# include<stdio.h>

int main(){

    int a=22;

    int b=3;

    printf("%d\n",a/b);

    return 0;

}

输入以下命令编译并运行:

gcc -o 5-1 5-1.c

./5-1

结果如下:

 

运行后之后,大家可以看到运行的结果是 7 而非 7.33333。

重新编写 5-1.c 作出以下修改:

#include<stdio.h>

int main(){

    float a = 22.5;

    int b = 3;

    printf("%d\n",a%b);

    return 0;

}

重新编译运行该程序,显示出以下结果:

 

编译出现 error 表示编译未成功(如果只出现 warning 表示警告,则其实编译已经成功生成了可执行文件),并提示了错误内容。

这也验证了我们在注意中提到的 % 运算符要求参加运算的对象为整数。

自增、自减运算符

作用是使变量的值加 1 或减 1,例如:++i,--i(在使用 i 之前,先使 i 加(减)1);i++,i--(在使用 i 之后,使 i 的值加(减)1)。

猛地一看,++i 和 i++ 的作用相当于 i=i+1。但是 ++i 和 i++ 的不同之处在于 ++i 是先执行 i=i+1 后,再使用 i 的值;而 i++ 是先使用 i 的值之后,再执行 i=i+1。我们看下面的例子:

编写源程序 5-2.c:

# include<stdio.h>

int main(){

    int a = 5;

    printf("%d\n",a++);

    printf("%d\n",++a);

    return 0;

}

编译运行后的结果是:

 

大家千万不要以为结果应该是:

5

6

因为 a++ 以后 a 的值已经成为了 6,而非是 5,经过 ++a 后的值是 7。 这个程序虽然简单,大家还是需要认真思考一番。

注意: 自增运算符 (++) 和自减运算符 (--) 只能用于变量,而不能用于常量或表达式。如 5++ 或者 (a+b)++ 都是不合法的。因为 5 是常量,常量的值是不能改变的。(a+b)++ 也是不可能实现,假如 a+b 的值是 5,自增后变为 6 放在什么地方呢?无变量可供存放。

现在大家可能还不能感受到自增和自减的用处,等我们学到循环语句和指针的时候,你将会在大量的程序中看到自增和自减。

不同数据之间的混合运算

在程序中经常会遇到不同类型的数据进行运算,比如 7*3.5。如果一个运算符的两侧数据类型不同,则先进行类型的转换,使两者具有同一种类型,然后进行运算。因此整型、浮点型、字符型数据之间可以进行混合运算。 数据类型计算的时候究竟是如何转换类型的呢?大家先看下表:

 

  1. 如果 int 类型的数据和 float 或 double 型数据进行运算时,先把 int 型和 float 型数据转换为 double 型数据,然后进行运算,结果为 double 型。其他的大家可以按照上图来做。
  2. 字符 (char) 型数据和整型数据进行运算,就是把字符的 ASCII 代码与整型运算。如 4+'B',由于字符 'B' 的 ASCII 代码是 66,相当于 66+4=70。字符型数据可以直接和整型数据进行运算。如果字符型数据和浮点型数据运算,则将字符的 ASCII 码先转化为 double 型,然后再进行运算。

我们编写一个程序分析一下他们转换的编译过程,编写程序 5-3.c:

# include<stdio.h>

int main(){

  int i = 3;

  float f = 4.3;

  double d = 7.5;

  double sum;

  sum = 10 + 'a' + i*f - d/3;

  printf("%lf\n",sum);

    return 0;

}

在 sum=10+'a'+i*f-d/3; 这条语句中,右边的表达式从左到右扫描,运算次序为:

10 + 'a' 的运算,'a' 的值是整数 97,运算结果为 107。 i*f 的运算。先将 i 与 f 都转换为 double 型,两者运算 12.9,double 型。 整数 107 与 i * f 的值相加,结果为 119.9,doubl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值