c语言的输出格式

对齐可以使用%d -> %10d
左对齐可以使用%10d ->%-10d
\n 到下一行
\r 到当前行的行首
\b 向前退格
位操作
<< 左移 高位丢弃,低位补零
>> 右移 正数(unsigned)高位补零,低位丢弃,负数,高位补1
异或运算符
5,6,7,5,7 -》找出只出现一次的数-》把所有进行异或
相同的数异或为零
任何数和零异或是其自身
**交换率
int i = 0, j;
j=i++>0; // ①j=i>0 ; ②i++;
则i = 1 ,j = 0 。
算数运算符 > 关系运算符 >逻辑与逻辑或 > 相同运算符从左到右进行
求: 5>3&&8<4-!0;

%d
%s %f 会忽略空格和\n ,就是读到空格或\n以后,就结束读取,不会读取后面的内容
String Concatenate
strcat() 连接v
day01作业
指针


int p; 那么p[0], &p, &p[0], (&p)[0], p 分别代表什么?
p[0]就是*p 就是p所指向的内存中的值
&p是p这个指针本身的地址,&p的类型是int**
&p[0]就是p[0]的地址,也就是p
(&p)[0],就是*(&p),也是p
*p,就是前面说的p[0]
helloworld是在常量区,常量区的数据是只读,不能够修改。如果修改常量区就会报错
想要修改p的内容,我们可以先让p指向C这时候p存储的是C的地址,就不是常量区的数据,就可以修改了。









pi是一级指针,&pi是二级指针。对一级指针取地址,拿到的是二级指针
int a=5; //定义整形变量 int *p=&a; //定义一个指针指向这个变量 int **p1=&p; //定义一个二级指针指向p指针 / 那么取出5的方式都有哪些呢? / printf(“a=%d”,a); printf(“a=%d”,*p); printf(“a=%d”,**p1);
根据运算优先级,&p 等价于(&p)。&p 等价于&(p)。 1、如果p是int 指针变量,那么&p = p,&p = p,都是p,但还没定义p指向哪,存的是谁的地址。 2、如果p是一个int变量,那么&p = p;而&p是非法的,因为p非法。 比如int p =10;那么&p = (&p) = p = 10(即从p的地址取值),而&p = &(p) 则非法,因为p=10,*10是取内存地址为10的值,这在c语言中是不合法的。

