C/C++编程细节(一)——你未必知道
2015-08-21 23:41
309 查看
1、printf函数的参数从右向左运算
结果:321
分析:*p++运算,先计算*p,然后再使p得值加1;
本题先输出最后一个*p,是1,然后p+1,指向了字符串中第二个数2;
以此类推。
2、 x = x&(x-1):每运算一次,就导致二进制x中的1减少一个。
这段代码的作用:统计1的个数。
3、fork执行一次,返回两个值。父进程返回子进程号,子进程返回0。
|| 与运算:A||B,如果A为真,则B就不执行;A为假,则B才会执行。
共产生3个进程。
分析: fork()主
fork()主 fork()子1
fork()子1 fork()子2
所以,一共产生3个进程。
4、continue:跳出本次循环。break:跳出循环。
程序结果:8.
5、函数的递归调用:相当于栈,先进后出
结果是:suiene
6、大小端
小端:低位存在低地址。pc机
大端:低位存在高地址。网络字节
如果
X a;
a.x=0x11223344;//16进制
则y[3]=11;
7、可用于switch语句的类型:
除了浮点、字符、字符串、结构体、对象以外的任意数据类型
char s[] = "123", *p; p = s; printf("%c%c%c\n", *p++, *p++, *p++);
结果:321
分析:*p++运算,先计算*p,然后再使p得值加1;
本题先输出最后一个*p,是1,然后p+1,指向了字符串中第二个数2;
以此类推。
2、 x = x&(x-1):每运算一次,就导致二进制x中的1减少一个。
int miracle(unsigned int n) { int m= n==0 ? 0:1; while (n=(n&(n-1))) { m++; } return m; }
这段代码的作用:统计1的个数。
3、fork执行一次,返回两个值。父进程返回子进程号,子进程返回0。
|| 与运算:A||B,如果A为真,则B就不执行;A为假,则B才会执行。
int main() { fork()||fork(); }
共产生3个进程。
分析: fork()主
fork()主 fork()子1
fork()子1 fork()子2
所以,一共产生3个进程。
4、continue:跳出本次循环。break:跳出循环。
#include int main() { int a, b; for (a = 1, b = 1; a <= 100; a++) { if (b >= 20) break; if (b % 3 == 1) { b += 3; continue; } b -= 5; } printf("%d\n", a); return 0; }
程序结果:8.
5、函数的递归调用:相当于栈,先进后出
main(){ char str[]="Geneius"; print (str); } print(char *s){ if(*s){ print(++s); printf("%c",*s); } }
结果是:suiene
6、大小端
小端:低位存在低地址。pc机
大端:低位存在高地址。网络字节
union X { int x; char y[4]; };
如果
X a;
a.x=0x11223344;//16进制
则y[3]=11;
7、可用于switch语句的类型:
除了浮点、字符、字符串、结构体、对象以外的任意数据类型
相关文章推荐
- 黑马程序员-c语言-字符串求公共子类
- C语言字符数组与字符串简介
- C++ 函数返回引用
- c++ 模板函数,类模板,仿函数使用实例代码
- 同一个变量打印char类型和unsigned char 类型,引发的思考
- 关于argc和argv
- 【C++】万年历(时间计数器)
- C语言中二维数组的动态申请与释放
- 【C++】复数类
- The hardest problem
- C++ 中单独的下划线_是合法的标识符
- [LeetCode] Ugly Number II
- c++程序设计课程--简单的设计任务
- Biker's Trip Odomete
- C语言变量声明内存分配
- 经典任务调度算法的模拟程序
- 零基础学C语言 笔记二 scanf
- C++ 中左值与右值区别
- C/C++浮点数在内存中的存储方式
- c语言之进制转换(栈实现)