C语⾔不同数据类型间的混合运算
使⽤C语⾔将不同数据类型之间进⾏混合运算,此次为个⼈练习,若有错误敬请提出。
⾸先,我们来看⼀个⼩例⼦:
定义⼀个整型,⼀个字符型,⼀个浮点型,输⼊部分“%d%c%f”不使⽤空格进⾏隔开。
#include <stdio.h>
#include <stdlib.h>
int main(){
int i;
char c;
float f;
scanf("%d%c%f", &i, &c, &f);
printf("i=%d,c=%c,f=%f\n", i, c, f);
}
那么,输出的结果如下:
1024 y 96.5
i=1024,c= ,f=0.000000
为什么c输出来的结果为空?f输出来的是0.000000?因为我们在输⼊参数时将值使⽤空格隔开输⼊,⽽scanf参数中并没有⽤空格把三个参数进⾏隔开。于是,%c取值取到了空格,⽽空格在ASCII 编码中⽤字符表⽰如下表:
因此,c取值为空。⽽f取的值是字符m,于是得出来的值为0.000000
接下来,我们开始整型,字符型,浮点型的混合运算。
要求:读取⼀个整型数,字符,浮点数,分别到变量i,j,k中,然后将i,j,k直接相加并输出,⼩数点后保留两位⼩数,不⽤考虑输⼊的浮点数的⼩数部分超过了两位
我们要知道有⼩数是属于浮点数,⽽保留两位⼩数是%.2f。输出部分使⽤强制转换。
代码如下:
#include <stdio.h>
#include <stdlib.h>
int main(){
int i;
char j;
float k;
scanf("%d %c %f", &i, &j, &k);
printf直接输出数字printf("%.2f", (float)i+(float)j+k);
return0;
}
运⾏结果:
输⼊10 a 98.3 时,所以输出的字符型应为 "205.30" ,如下所⽰:10 a 98.3
205.30