-
2.6 各类数值型数据间的混合运算
混合运算:整型(包括int,short,long)、浮点型(包括float,double)可以混合运算。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算.
说明: 这种类型转换是由系统自动进行的。
#include<stdio.h>
int main()
{
int a = 10;//整型变量
char c = 'a';//字符型变量
printf("%d\n", a + c);//说明整型变量和字符型变量混合运算时把字符型变量按照ASCII值转换成整形变量进行输出
int b = 20;//整型变量
float d = 3.5222;//单精度浮点型
printf("%f\n",b + d);//说明整型变量和浮点型变量混合运算时整形变量转换成浮点型变量,最后输出浮点型变量
char e = 'a';
float f = 5.5555;
printf("%f\n", e + f);
return 0;
}
-
2.7 算术运算符和算术表达式
- 1. C语言的运算符有以下几类:
- ⑴算术运算符 (+ - * / %)
-
#include<stdio.h> int main() { //⑴算术运算符 (+ - * / %) int a = 10; int b = 5; int c, d, e, f; c = a + b;//+ printf("%d\n", c);//10+5=15 d = a - b;//- printf("%d\n", d);//10-5=5 e = a * b; printf("%d\n", e);//10*5=50 f = a % b; printf("%d\n", f);//10%5=0 //这里说明一下%运算是取余数 10除5的余数为0,所以10%5=0 int g = 10; int h = 3; printf("%d\n", g % h);//10除3的余数为1,所以10%3=1 return 0; }
- ⑵关系运算符 (><==>=<=!=)
-
#include<stdio.h> int main() { //⑵关系运算符 (><==>=<=!=) int a = 10; int b = 20; int c = 10; if (a > b) printf("a大于b\n"); else printf("a小于b\n"); if (a == c) printf("a等于c\n"); else printf("a不等于c\n"); if (a != b) printf("a不等于b\n"); if (a <= b) printf("a小于或者等于c\n"); if (b >= a) printf("b大于等于a"); return 0; }
- ⑶逻辑运算符 (!&&||)
-
int main() { //⑶逻辑运算符 (!&& || ) //在c语言中0表示假(flase),非0表示真 if (!0)// !逻辑非表示相反 printf("假\n"); if (0) printf("假"); int a = 10; int b = 20; if (!(a > b)) printf("a<b"); //a>b为假,但是 !(a>b)逻辑非之后结果为真 return 0; }
- ⑷位运算符 (<< >> ~ |∧&)
- ⑸赋值运算符 (=及其扩展赋值运算符)
-
#include<stdio.h> int main() { //⑸赋值运算符 (=及其扩展赋值运算符) int a; a = 10;//赋值运算 把10赋值给a printf("%d\n", a);//a=10; return 0; }
- ⑹条件运算符 (?:)
-
#include<stdio.h> int main() { int a = 5; int b = 10; int ret = (a > b ? a : b);//解读:a大于b吗? 如果大于则ret=a,否则ret=b; printf("%d\n", ret);//10 return 0; }
- (8)指针运算符 (*和&)
-
#include<stdio.h> int main() { int a = 10; int* ptr = &a;//&是取地址操作符,把a的地址给ptr, ptr是一个int*类型的指针里面存放的是a的地址 printf("%d\n", *ptr);//*是解引用操作符 *ptr=a=10 //ptr里面存放的是a的地址%p的打印地址 printf("%p\n", ptr); printf("%p\n", &a); return 0; }
- (9)求字节数运算符(sizeof)
-
#include<stdio.h> int main() { int a = 10; char b = 'a'; double c = 1.1232323; printf("%d\n", sizeof(a));//整形4个字节 printf("%d\n", sizeof(b));//字符型1个字节 printf("%d\n", sizeof(c));//双精度浮点型8个字节 return 0; }
- (10)强制类型转换运算符( (类型) )
-
#include<stdio.h> int main() { //(类型名) int a = 10; float b = (float)a;//把整型变量a强制类型转换为float类型 printf("%f\n", b);//10.000000 float x = 3.5; int y = (int)x;//把浮点型x强制类型转换为整形变量 printf("%d", y);//3 return 0; }
-
2.8 逗号运算符和逗号表达式
逗号运算符:将两个表达式连接起来,又称为“顺序求值运算符”。求解过程先求表达式1,再求表达式2,整个表达式的值是表达式2的值
#include<stdio.h>
int main()
{
int a;
a = (3 + 5, 5 + 6);//表达式2得值
printf("%d\n", a);//11
return 0;
}
思考:
#include<stdio.h>
int main()
{
//int a;
//a = (3 + 5, 5 + 6);//表达式2得值
//printf("%d\n", a);//11
int a;
a = 3 + 5, 5 + 6;
printf("%d\n", a);//思考a是多少
return 0;
}