一些笔记and一点小题目

[1]运算符

1.1 逻辑运算符

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

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

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

0为假 1为真

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

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

printf("%d\n",12>3&&8

printf("%d\n",12>3||8

printf("%d\n",12>3 && !(8

printf("%d\n",!1);//0

0为假 非0值为真

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

截断法则:

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

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

练习:

#include

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

}

1.2 位运算符

二进制数 0 1

& | ^ ~ >

&位与:全1则1,有0则0

| 位或:有1则1,全0则0

^异或:相同为0,不同为1

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

变量x和y的值相等,且为非零值,则以下选项中,结果为0的表达式是(D)

A.x||y B.x|y C.x&y D.x^y

实现两个变量值的交换:

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:

0000 0000 0000 0000 0000 0000 0000 1100

-12:

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

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

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

反码:上述补码 -1 为7-->0111

1111 1111 1111 1111 1111 1111 1111 0111

原码:

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

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

6

公式:

6*2^2=24

-6*2^2=-24

>>右移

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

6>>2==1

公式:

6/2^2=1

-6/2^2=-2

置一公式:a|(1

置零公式:a&(~(1

以下程序升输出结果是(A)

int main()

{

char x=040; //1 000 000 ==0100

printf("%o\n",x

return 0;

}

A.  100 B.80 C.64 D.32

1.3 关系运算符

> >= <

==等于 =赋值

2--9 x>2&&x

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

? :

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

int a=5,b=9;

int c=a>b?a:b;

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

1.5 赋值运算符

= += -= *= /= %=

a-=5; // a=a-5;

1.6 运算符优先级

单算移关与 异或逻条赋

单目运算符: ~ ++ -- !

算术运算符: * / % + -

移位运算符: >

关系运算符: > >= <

位与运算符: &

异或运算符: ^

位或运算符: |

逻辑运算符: && ||

条件运算符: ?:

赋值运算符: = += -= *= /= %=

设int b=2;表达式 (b>>2)/(b>>1)的值是(A)

A.0 B.2 C.4 D.8

b=2-->0010 b>>2=0000 b>>1=0001

解:A

a=3-->0011 b=6-->0110

c=a^b

b0001 1000

a 0000 0011

c= 0001 1011

标点符号

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

分隔符

空格 tab \n

[2]变量

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

格式:

存储类型 数据类型 变量名

int a;

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

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

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

名字

字节大小

取值范围(了解)

int

整型

4

-2 147 483 648~2 147 483 647

char

字符型

1

-2^7~2^7-1

short

短整型

2

-32768~32767

long

长整型

8

-2 147 483 648~2 147 483 647

float

单精度浮点型

4

[-3.4028235E38, 3.4028235E38]

double

双精度浮点型

8

-2^1024~2^1024

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

局部变量

全局变量

定义位置

函数体内部

函数体外部

初值

未初始化,值是随机值

未初始化,值是0

存储位置

栈区

全局区

生命周期

同当前函数体共存亡

同整个程序共存亡

作用域

当前函数体内部

整个程序

[3]常量

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

3.1 整型常量

八进制 十进制 十六进制

3.2 字符常量

字符 由' '包裹一个字符

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

字符数组----》

3.3 浮点型常量

float double

3.4 标识常量

宏定义:

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

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

注意:先原样替换,再计算。

宏函数,了解

作业:

1.梳理笔记

2.一点小题目:

输出结果为:1

a=10;k=2;m=1

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

#define M 5

#define N M+M

k=N*N*5

=5+5*5+5*5=5+25+25=55

【有道云笔记】个人笔记
https://note.youdao.com/s/FLE3X0on

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值