##基本计算式
#include <stdio.h>
int main(){
//加减乘
int a = 10;
int b = 3;
printf("%d\n", a + b);
printf("%d\n", a - b);
printf("%d\n", a * b);
//除法
printf("%d\n", a / b);//两个整数计算 结果还是一个整数 向下取整 就是剪掉小数部分
printf("%f\n", 123.0 / 100);//含有小数的计算 结果是一个小数 要用f
printf("%f\n", 3.33333333 + 6.66666666);//小数相加 结果是一个小数但结果会不精确
//取余 此时计算式内必须为整数 小数无法计算
printf("%d\n", 10 % 3);//取余数 10除以3余1 结果为1
printf("%d\n", 10.0 % 3);//小数无法计算
return 0;
}
##将一个三位数拆成个位十位百位
#include <stdio.h>
int main(){
//将一个三位数拆成个位十位百位
//定义一个变量保存这个三位数
int num;
//输入这个三位数
printf("请输入这个三位数:");
scanf("%d",&num);
//计算百位上的数字
printf("百位上的数字是:%d\n",num/100);
//计算十位上的数字
printf("十位上的数字是:%d\n",(num/10)%10);
//计算个位上的数字
printf("个位上的数字是:%d\n",num%10);
return 0;
}
##隐式转换 数据类型不一致 不能直接运算 要把格式转换一致 隐式转换:把一个小范围的转成大的 自发的 double>float>longlong>long>int>short>char
#include <stdio.h>
int main(){
int a = 3;
int b = 2;
double c = 2.0;
printf("%d\n",a / b);
printf("%f\n",a / c);//此时的c是double类型 因此结果也是double类型
printf("%f\n",1.0 * a / b);//1.0将结果转换成了double类型
return 0;
}
问题1:为什么1.0乘了后就一定变成double类型 而不是其他类型
问题2:上面的计算过程中没有double出现 那上面计算得出的小数是double
问题3:scanf和printf的区别
解答:scanf是代码写好后实际操作时需要操作者自己输入的,printf是实际操作时输出的部分
##强制转换 如果把取值范围大的赋值给取值范围小的 就需要进行强制转换
#include <stdio.h>
int main(){
int d = 3;
short i = (short)d;//强制类型转换
int e = 65536;
short f = (short)e;//int类型转换成short类型,会发生溢出 即e的值大于short类型所能表示的最大值,会发生溢出
//int类型是32位(4个字节)的,short类型是16位(2个字节)的,所以e的值大于65535时,会发生溢出
return 0;
}
##字符相加 char在参与运算时 会转成int再运算 char的取值范围:ASCII中的所有内容 一个字节
#include <stdio.h>
int main(){
char ch = 'A';
char ch1 = ch + 1;
printf("%c\n", ch1); // ASCII value of A is 65 so 65 + 1 = 66 which is B
printf("The character is %c\n", ch1);
printf("The character is %d\n", ch1);// ASCII value of B is 66
return 0;
}