C语言运算

变量的数据类型时可以转换的。转换的方法有两种,一种是自动转换,一种是强制转换。

自动转换

自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以下规则:
(1)若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
(2)转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。
(3)所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再做运算。
(4)char型和short型参与运算时,必须先转换成int型。
(5)在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。

下图表示了类型的自动转换的规则。

double<—— long<——unsigned<——int<——char,short

`main(){
    
    
float Pl = 3.14159;
int s,r = 5;
s = rrPl;
printf(“s = %d\n”,s);
}
本例程序中,Pi为实型;s,r为整型。在执行s=rrPI语句时,r和PI都转换成double型计算,结果也为double型。但由于s为整型,故赋值结果仍为整型,舍去了小数部分。

强制类型转换

强制类型转换是通过类型转换运算来实现的。

类型说明符)(表达式)
其功能是把表达式的运算结果强制转换类型说明符所表示的类型。

(float) a 把a转换为实型
(int)(x+y) 把x+y的结果转换为整型
在使用强制转换时应注意以下问题:
(1)类型说明符和表达式都必须加括号(单个变量可以不加括号)

  • 如把(int)(x+y)写成(int)x+y则成了把x转换int型之后再与y相加了。

(2)无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。

main(){
    
    
float f = 5.75;
printf("(int)f = %d,f = %f\n",(int)f,f);
}
本例表明,f虽强制转为int型,但只在运算中起作用,是临时的,而f本身的类型并不改变。因此,(int)f的值为5(删去了小数)而f的值仍为5.75.

所以double型做除法时,一定要注意除数或者被除数一定要至少有一个为double型!!!

输出

% [标志位] [显示占位宽度] [精度] [数字长度] 说明符

%d%f%c都是printf输出时。规定数据输出方式的,详细的输出方式列表如下:
%d 有符号10进制整数
%i 有符号10进制整数
%o 有符号8进制整数
%u 无符号10进制整数
%x 无符号的16进制数字,并以小写abcdef表示
%X 无符号的16进制数字,并以大写ABCDEF表示
%F/%f 浮点数
%E/%e 用科学表示格式的浮点数
%g 使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表示为指数
%c 单个字符
%s 字符串
%% 显示百分号本身

标准位

在这里插入图片描述

宽度参数

在这里插入图片描述

说明符号

在这里插入图片描述

e格式符

e格式符 : 指定以指数形式输出实数。 如果不指定输出数据所占的宽度 和 小数位数的话,许多C编译系统会自动给出小数位数所占6列,指数部分占5列。数值按标准化指数形式输出(即小数点前必须只有1位非零数字)
例如:

printf("%e",123.456);

输出:(所输出的实数共占13列)
在这里插入图片描述

也可用“%m.n e”的格式输出,例如:

printf("%13.2e",123.456);

输出:

字符型数据以及各类数值型的混合运算

1.字符型数据

1.1字符常量

在这里插入图片描述

1.2 字符变量

定义:存放字符常量,只能放一个字符。

char c1,c2;
c1='a';c2='b';

1.3 字符数据内存存储和使用

定义:字符常量放在字符变量中,不是把字符本身存在内存中,而是将该字符对应的ASCII码仿造放在存储单元中。如:’a‘对应ASCII为十进制数97,即c1内存单元存储为01100001.因此字符型数据和整型数据之间可以通用,即一个字符数据既可以以字符形式输出,也可以以整数形式输出。——%c和%d,字符数据只占一个字节,存放0-255范围整数。

2 各类数值型数据之间的混合运算

整型(int, short, long)和浮点型(float, double, long double)以及字符型(char)之间可以混合运算,但是在运算时,需要将不同类型的数据先转换成同类型,然后再运算。转换规则如下:
在这里插入图片描述

注意

1.printf函数对输出表中各量求值的顺序是自右至左进行的。

Guess you like

Origin blog.csdn.net/weixin_51552144/article/details/120861858