20181011首次授课
数据的类型:基本类型,构造类型,指针类型,空类型;
电脑中所存储的是二进制的补码(负数时,原码取反再+1);
函数后面需要加括号,然而sizeof
则不是函数,只是运算符。
sizeof(a)
运算符(操作符):计算表达式a在内存中所占的字节数;
左值必须是确定的值:
++a = b; a++ = b;
左边式子是正确的,因为无论a值运算前后,所开辟的空间是一样的,且只有一个,然而第二个式子,a值前后值不同,所以开辟的空间不同。无法把b赋予a;
++i;
i++;
前者要比后者运算效率高,时间复杂度小,因为少开辟一个空间。同时++i,是先运行(i+1);i++则是先运用i,等语句结束再进行(i+1);
while(a < b < c)
while(a-- && ++b && c--)
运算时,当a < b,即为真(1),下一步判断1是否小于c;反之则判断0是否小于c,需要引起注意。
a–满足条件后(比如 a = 0)这时候已经满足条件了,++b和c–已经不再运行了,但是a–还需要再进行一步。
无符号数和有符号数相加之后得到的是无符号数。%u %d输出结果不一样
int 4
short 2
long 4
char 1
float 4
double 8
char a = 258;
printf("%d\n",a)
a = 2;因为258换算成二进制,然而char类型包含一个1个字节
‘0’ = 48;
‘A’ = 65;
'a' = 97;
'\n' = 10;
' ' = 32;
十进制转化为二进制,八进制,十六进制。所用方法一样。先取余再除(顺序不能颠倒)
C语言中三种输入方法:
scanf printf
getchar putchar
gets puts
需要完成任务:进制间的转换,数字和字符之间的转换,while(a < b < c)以及while(a-- && ++b && c–)的运算,进程条的编写,圆(转圈圈的编写\b)。
交换两者之间的值(不用if
):
a = 7,b = 5;
a = a + b;
b = a - b;
a = a - b;
另一种解法
异或
a = a^b;
b = a^b;
a = a^b;
求两者之间的最大值(不用if
):
a = 7,b = 5;
a = (a + b + abs(a - b)) / 2;
字符和数字之间的转换:
加减‘0’即可进行二者之间的转换。
例如: a = 1;怎么变为字符1('1')
a = 1 + '0';
同理:a = '1',怎么变为数字1
a = a - '0';
1 = '1' (49) - '0'(48);