今日份学习日常(2)[习题+梳理]

[1]运算符

逻辑运算符

&& 逻辑与:全真则真,一假则假

||    逻辑或:一真则真,全假则假

!     逻辑非:非真则假,非假则真

0为假           1为真

printf("%d\n",2>3); //0

printf("%d\n",22>3);//1

0为假           非0值为真

printf("%d\n",81&&10); //1

截断法则

逻辑与运算中前边的表达式结果后边表达式不再执行直接返回

逻辑或运算中前边的表达式结果为真,后边表达式不再执行直接返回

例题:

#include <stdio.h>

int main()

{

        int a=5,b=6,c=7,d=8,m=2,n=2;

        (m=a>b)&&(n=c>d);

        printf("%d %d",m,n); //0 2

}

程序运行结果为m=0;n=2

 位运算符

二进制数  0  1

|   ^   ~   <<  >>

----------------------------------

&   : 1100

|    : 1100

^   异或: 相同0不同1

~   取反: 1---->0     0------>1

 例题:

c的值是多少?

#include<stdio.h>

int main()

{

int a=12,b10;

int c=a&b;

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

return 0;

}

12:1100

10:1010

a&b:1000==8

如何实现两个变量值的交换?

int a=12,b=10;

(1)

int temp=0;

temp=a;

a=b;

b=temp;

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

(2)

a=a^b;//0110==6

b=a^b;//0110 1010 1100=12

a=a^b;//0110 1100 1010=10

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

计算机中,整数以二进制的补码形式存储,计算的原码、反码、补码。

原码反码补码
正数相同
           相同 
相同
负数相同
除符号位外,其他按位取反
反码+1

int 4字节=32位;1字节=8位

符号位:最左边一位    0为正数    1为负数

12:正数最左边为0

0000 0000 0000 0000 0000 0000 0000 1100

-12:负数最左边为1

1000 0000 0000 0000 0000 0000 0000 1100

 例题:

int a=12,b=-10; //12:1100 10:1010

int c=a&b;

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

12补码:

0000 0000 0000 0000 0000 0000 0000 1100

-10原码:

1000 0000 0000 0000 0000 0000 0000 1010

-10反码:

1111 1111 1111 1111 1111 1111 1111 0101

-10补码:

1111 1111 1111 1111 1111 1111 1111 0110

12补码 & -10补码:

0000 0000 0000 0000 0000 0000 0000 1100

1111  1111  1111  1111  1111 1111  1111  0110

0000 0000 0000 0000 0000 0000 0000 0100===4

(~) 取反例题:

int a=7;

int c=~a;

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

-------------------------------------------------------------------------------------------------------------------------

7补码:

0000 0000 0000 0000 0000 0000 0000 0111

~: 补码

1111  1111  1111  1111  1111  1111  1111 1000        1000=8 0111

反码:

1111 1111   1111   1111  1111  1111  1111  0111

原码:

1000 0000 0000 0000 0000 0000 0000 1000==-8

<<左移:左移n位,右边补充n个0

6<<2==24

公式: 

        6*2^2= 24

       -6*2^2=-24

>>右移:右移n位,最右边舍弃n位

6>>2==1

公式:

         6/2^2=1

        -6/2^2=-2

置一公式:a|(1<<n)

置零公式:a&(~(1<<n))

关系运算符

>>===<<=!=
 

==等于          =赋值

2~9      x>2&&x<9

三目运算符 (选择运算符)

:

表达式1?  表达式2表达式3;

例题:

int a=5,b=9;

int c=a>b?a:b;

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

两个数取最大值

 赋值运算符

=+=-=/=%=*=

a-=5; 相当于a=a-5;[其它同理]

 运算符优先级

单算移关与    异或逻条赋

单目运算符~ ++ -- !
算术运算符* / % + -
移位运算符<< >>
关系运算符> >= < <= == !=
运算符&
异或运算符^
运算符|
逻辑运算符&& ||
条件运算符?:
赋值运算符= += -= *= /= %=

标点符号

英文 , ; [ ] {} () ....

分隔符

空格 tab \n

[2]变量

程序运行过程中会发生变化

格式

存储类型     数据类型       变量名

                       int                 

存储类型决定变量存储位置

数据类型决定变量开辟空间大小

变量名遵循标识符命名规则

名字

字节大小

取值范围(了解)

int

整型

4

-2147483648 ~ 2147483647

char

字符型

1

-2^7~2^7-1

short

短整型

2

-32,768~32,767

long

长整型

8

-21474836482147483647

float

单精度浮点型

4

3.4*10^-383.4*10^38

double

双精度浮点型

8

1.7*10^-3081.7*10^308

printf("%ld\n",sizeof(long));

局部变量和全局变量的区别

局部变量

全局变量

定义位置

函数体内部

函数体外部

初值

初始化随机值

初始化0

存储位置

栈区

全局区

生命周期

当前函数体共存亡

整个程序共存亡

作用域

当前函数体内部

整个程序

[3]常量

程序运行过程中不会发生变化

整型常量

八进制 十进制 十六进制

字符常量

字符  ' ' 包裹一个字符

字符串 由 " " 包裹,由'\0'作为字符串的结束标志

字符数组----》

浮点常量

float double

标识常量

宏定义

格式#define 宏名 常量表达式代码段

宏名一般大写表示为了普通变量区分开

注意原样替换计算

例题:

[1]

[2]

 宏函数(了解)

习题:

a /= k+m*k+m/k+m*k+m = 2+2+0+2+1=7

a = 1

答案:1

2.

k = M+M*M+M*5 = 55

 答案:C

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值