l妈的今天不知咋滴又睡过头,!!!!切记不要晚睡。。。。。。今天把操作符看完了,顺便看了下数据结构,感觉还是。。。。。。 希望快把编程学会然后就能去比赛然后就有比赛经历了。
1.在最后有一些坑爹的题: 不能创建临时变量(第三个),交换两个数字。
int main()
{
int a = 1;
int b = 2;
a = a + b;
b = a - b;
a = a + b;
a = a ^ b;
b = a ^ b;
a = a ^ b;
return 0;
}
2.:求一个整数存储在内存中的二进制中1的个数
int main()
{
int a = 2;
int count = 0;
while(a)
{ if(a%2 == 1)
count++;
a = a \2;
int
main
()
{
int
num
= -
1
;
int
i
=
0
;
int
count
=
0
;
//
计数
while
(
num
)
{
count
++
;
num
=
num
&
(
num
-
1
);
}
printf
(
"
二进制中
1
的个数
= %d\n"
,
count
);
return
0;
3.数组相应的题也做了;
!!!!指针是4个字节;
4.容易错;
#include <stdio.h>
int
main
()
{
int
a
=
10
;
int
x
=
a
++
;
//
先对
a
先使用,再增加,这样
x
的值是
10
;之后
a
变成
11
;
int
y
=
a
--
;
//
先对
a
先使用,再自减,这样
y
的值是
11
;之后
a
变成
10
;
return
0
;
}
5.逻辑操作符
1.&& 2.||
易错
1
&
2
----->
0
1
&&
2
---->
1
1
|
2
----->
3
1
||
2
---->
1
6.
int
main
()
{
int
i
=
0
,
a
=
0
,
b
=
2
,
c
=
3
,
d
=
4
;
i
=
a
++ && ++
b
&&
d
++
;
//i = a++||++b||d++;
printf
(
"a = %d\n b = %d\n c = %d\nd = %d\n"
,
a
,
b
,
c
,
d
);
return
0
;
}
即:|| 一路算下去,是真就停止。
7.整型提升,
C
的整型算术运算总是至少以缺省整型类型的精度来进行的。
为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整形提升,
1.如果为负数,
char
c1
= -
1
;
变量
c1
的二进制位
(
补码
)
中只有
8
个比特位:
1111111
因为
char
为有符号的
char
所以整形提升的时候,高位补充符号位,即为
1
提升之后的结果是:
11111111111111111111111111111111
2.如果为正数,
char
c2
=
1
;
变量
c2
的二进制位
(
补码
)
中只有
8
个比特位:
00000001
因为
char
为有符号的
char
所以整形提升的时候,高位补充符号位,即为
0
提升之后的结果是:
00000000000000000000000000000001
3.
无符号整形提升,高位补
0。
8.
复杂表达式的求值有三个影响的因素。
1.
操作符的优先级
2.
操作符的结合性
3.
是否控制求值顺序
9.注意不要代码不要乱写。
10.指针, 指针就是个变量,用来存放地址的变量。
、、、、、所有类型的指针大小都一样。在32位上都为4;
指针的类型决定了+-的多少 指针的步长。
11.下午还顺便学了点数据结构,留到明天在总结了。