note_14

 

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

++ -- 操作符

int main()

{

int a = 10;

int b = ++a;//前置++,先++,后使用

int c = a++;//后置++,先使用,后++

printf("a=%d b=%d c = %d\n", a, b, c);//12 11 11

return 0;

}

int main()

{

int a = 10;

int b = --a;//前置++,先++,后使用

int c = a--;//后置++,先使用,后++

printf("a=%d b=%d c = %d\n", a, b, c);//8 9 9

return 0;

}

解引用操作符*

int main()

{

int a = 10;

&a;

int* pa = &a;

int *px = &*pa;//与上面一样

*pa;//解引用操作符,通过pa的地址找到a

printf("%p\n", pa);

return 0;

}

***(放类型) 强制类型转化

int main()

{

int a = 3.14;

int b = (int)3.14;

printf("%d %d\n", a, b);//3 3

return 0;

}

void test1(int arr[])//传首元素地址

{

printf("%d\n", sizeof(arr));//4 地址编号的大小

}

void test2(char ch[])//传首元素地址

{

printf("%d\n", sizeof(ch));//4 地址编号的大小

}

int main()

{

int arr[10] = { 0 };

char ch[10] = { 0 };

printf("%d\n", sizeof(arr));//40

printf("%d\n", sizeof(ch));//10

test1(arr);

test2(ch);

return 0;

}

***关系操作符

比大小的

== "相等"

***逻辑操作符

&& || (关注真假)

按位与 & (关注二进制位)

按位或 | (关注二进制位)

int main()

{

int age = 15;

if (age > 0 && age < 18)

{

printf("未成年\n");

}

int month = 0;

if (month < 1 || month>12)

{

printf("输入错误\n");

}

return 0;

}

int main()

{

int i = 0, a = 0, b = 2, c = 3, d = 4;

i = a++ && ++b && d++;//a++进行,a是0,表达式结束

printf("a=%d\nb=%d\nc=%d\nd=%d\n", a, b, c, d);//1 2 3 4

return 0;

}

int main()

{

int i = 0, a = 1, b = 2, c = 3, d = 4;

i = a++ || ++b || d++;//a++进行,a是0,表达式结束

printf("a=%d\nb=%d\nc=%d\nd=%d\n", a, b, c, d);//2 2 3 4

return 0;

}

***条件操作符

三目操作符

表达式 1 ? 表达式2 :表达式3

表达式1为真执行表达式2,为假执行表达式3;

int main()

{

int a = 10;

int b = 20;

int max = 0;

max = a > b ? a : b;

return 0;

}

***逗号表达式

int main()

{

int a = 3;

int b = 5;

int c = 6;

int d = (a += 2, b = a - c, c = a + 2 * b);//等于最后一个表达式的结果

printf("%d\n", d);

return 0;

}

***下标引用操作符

[]

int main()

{

int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

printf("%d\n", arr[7]);

return 0;

}

***函数调用操作符

()

void test()

{

printf("hehe\n");

}

int main()

{

test();

return 0;

}

***访问一个结构体成员

. ->

结构体变量.结构体成员

结构体指针->结构体成员

struct Stu

{

char name[20];

int age;

double score;

};

int main()

{

struct Stu s = { "zs",20,85.5 };

printf("%s %d %.1lf\n", s.name, s.age, s.score);

struct Stu* ps = &s;//结构体指针

printf("%s %d %.1lf\n", (*ps).name, (*ps).age, (*ps).score);

printf("%s %d %.1lf\n", ps->name, ps->age, ps->score);

return 0;

}

***表达式求值

隐式类型转换

char short

整型提升:表达式中的字符和短整型操作数在使用之前被转换为普通整形

int main()

{

char a = 5;

//00000000000000000000000000000101

//a只能存1个字节00000101(截断)

char b = 126;

//00000000000000000000000001111110

//b存011111110

char c = a + b;

//a + b发生整形提升(补符号位)

//00000000000000000000000000000101 a

//00000000000000000000000001111110 b

//00000000000000000000000010000011 c

//10000011 c(截断)

printf("%d\n", c);//-125

//%d打印整数 ,发生整形提升

//11111111111111111111111110000011 补码

//11111111111111111111111110000010 反码

//10000000000000000000000001111101 原码

return 0;

}

***算术转换

int ,long ,long long ,float ,double

int main()

{

int a = 3;

float f = 5.5;

float r = a + f;//算术转换

//int -> float

return 0;

}

int main()

{

int a = 10;

int b = 20;

a + b;//表达式有两个属性:30 值属性,int 类型属性

return 0;

}

int main()

{

short s = 20;

int a = 5;

printf("%d\n", sizeof(s = a + 4));//2

printf("%d\n", s);//20 sizeof(表达式不真实计算)

return 0;

}

操作符的属性

1.操作符优先级

2.操作符的结合性

3.是否控制求值顺序

int main()

{

int a = 10;

int b = 20;

int c = a + b * 10;//优先级*

int d = a + b + 10;//结合性(查表)

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值