C-first

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);
 
发布了39 篇原创文章 · 获赞 10 · 访问量 763

猜你喜欢

转载自blog.csdn.net/weixin_43393776/article/details/83024840