#include<stdio.h> intmain() { int a = 10; float b = 2.5; //printf("%d\n",a + b);//有警告,类型不一致,打印结果不正确。 b = 30;//隐式类型转换 //从左到右,由大到小 short ----- int ----- long ----- float ----- double //printf("%d\n",a + b);//有警告,类型不一致,打印结果不正确。 printf("%f\n",a + b);
float b = 5 / 4;//整除运算 printf("b:%f\n",b);//1.000000 float c = 5.0 / 4;//浮点数除法 printf("c:%f\n",c);
int d = 6 / 4.0;//浮点数除法(隐式自动转换)小数部分会被舍弃,也不进行四舍五入。 printf("d:%d\n",d);//1 int e = 5 / 4.0;//(隐式自动转换) printf("e:%d\n",e);//1 float g = (float)5 / 4;//(强制转换) printf("g:%f\n",g);//1.250000
float f = (float)(5 / 4);//(强制转换)(显式自动转换) printf("f:%f\n",f);//1.000000 // 取模运算符(%)(取余运算):两个整数相除,取余数,取模运算符 //小数不能做取模运算 //功能: //1、获取一个整数中的每一位数字 2、 //例如:235 :个位5 十位3 百位 2 //235/1%10 得个位5 //235/10%10 得十位3 //235/100%10 得百位 2 //2、计算判断奇偶数 XX % 2 //3、判断一个数能被另一个数整除 int a = 5 % 3; printf("a:%d\n", a);//2
int b = 3 % 5; printf("b:%d\n", b);//3
// float c = 5.0 % 3.0;//error:%只能是整数参与运算 //单独使用,a++与++a效果一样; //参与赋值,a++:先赋值后自增,++a:先自增后赋值 int num1 = 5; printf("(num1++) + 3:%d\n", num1++ +3);//8 printf("num1:%d\n", num1);//6
int num2 = 5; printf("++num2 + 3:%d\n", ++num2 + 3);//9
//当++在变量前时,先自增运算,再使用这个变量 //当++在变量后时,先使用这个变量,再自增运算 int a = 10, b = 20; int c = (a++)+(++b);//c=(10)+(21)=31 printf("a:%d\nb:%d\nc:%d\n", a, b, c);//a:11, b:21, c:31 int b = (++a) + (a++) + (++a) + a; // (6) + (6) +(8) +(8) // a:6(6) (6) a:7 a:8 (8) 8 //不同的编译器可能有不同的解析方式,结果可能不同。
#include<stdio.h> intmain() { short c = 32767;//-32768~32767 c += 1;//c = c+1 //溢出:表示整数溢出,结果为-32768 printf("%hd\n", c);//-32768 printf("%d\n", (int)c);//-32768 printf("~~~~~%hu\n", c);//32768 //unsigned short c:%hu表示无符号的short类型0~65535 int x = 10; int y = x = 100;//可以连写 //int t = u = v = w = 200;//error:u,v,w都是变量名,没有定义,不能连写 return0; }
#include<stdio.h> #include<math.h> intmain() { int a = 0,b = 0; char c = 0; printf("请输入两个整数:"); //键盘输入两个整数,求出较大的整数,如果输入小数或者非数字,要进行判断 int n = scanf("%d%d%c",&a,&b,&c);//scanf()函数返回值是从键盘实际读取到数据的变量的个数 // printf("a = %d,b=%d,c=%d,c=%c\n", a,b,c,c); // printf("n = %d\n", n); n == 3?(c != '\n' ? printf("输入数据错误!\n"):printf("两个数中的最大数是:%d\n", a > b ? a : b )):printf("-----输入数据错误!!\n");
n == 3?(c != '\n' && c != ' ' && c!='\t' ?printf("~~~~输入数据错误!\n"):printf("~~~两个数中的最大数是:%d\n", a > b ? a : b )):printf("~~~~----输入数据错误!!\n"); n==3?(c == '\n' || c == ' ' || c=='\t' ?printf("~~~两个数中的最大数是:%d\n", a > b ? a : b ):printf("~~~~输入数据错误!\n")):printf("~~~~----输入数据错误!!\n"); return0; }
//不创建临时变量(第三个变量),实现两个数的交换。 #include<stdio.h> intmain() { int a = 2; int b = 4; a = a^b;//010 ^ 100 = 110 b = a^b;//110 ^ 100 = 010 a = a^b;//110 ^ 010 = 100 printf("a = %d b = %d\n", a, b); return0; }