有意思的几道C 题目
2012-02-23 23:54
501 查看
今天去一家公司参加了笔试,个人感觉有几道题挺有意思的,拿出来和大家分享一下:
1、
输出结果是什么?
答案应该是:1、死循环,然后是
a[0]:0x00
a[1]:0x00
a[2]:0x00
……
a[255]:0x00
注意i的类型,i的最大值是255,所以会一直循环下去。
2、
大家可以自己算一下。
3、
第二输出来是86,现在还没想清楚。
4、
function1打印出来是0,因为a[100]全部初始化为0,0即是'\0'。
function2打印出来的是4,是指针类型的长度。
5、
结果是:
a:0xbfc2dccc
a:
b:01234567
还没想清楚。
6、
打印出">10"。
7、
打印出并不是10,因为strlen(a)时是要找到'\0' 就结束的,我们并不知道a[10]的结束标记'\0'在哪里。
1、
void main(){ unsigned char i =0; char a[1024] ={0}; for(i = 0;i<1024;i++){ printf("a[%d]:0x%02x\n",i,a[i]); } }
输出结果是什么?
答案应该是:1、死循环,然后是
a[0]:0x00
a[1]:0x00
a[2]:0x00
……
a[255]:0x00
注意i的类型,i的最大值是255,所以会一直循环下去。
2、
void main(){ int a =0; a|=(0x01<<4); printf("%d\n",a);//a=16; a&=~(0x01<<4); printf("%d\n",a);//a=0; }
大家可以自己算一下。
3、
void main(){ int a =1; printf("%d\n",*((unsigned char *)&a));//output is 1 a=0x12345678; printf("%d\n",*((unsigned char *)&a+1));//output is 86 }
第二输出来是86,现在还没想清楚。
4、
void function1(char*a){ printf("%d\n",strlen(a)); } void function2(char*a){ printf("%d\n",sizeof(a)); } void main(){ char a[100] ={0};//0 is '\0' function1(a);// 0 is '\0' ,so strlen(a) is 0; function2(a);// pointer length is 4 bytes; }
function1打印出来是0,因为a[100]全部初始化为0,0即是'\0'。
function2打印出来的是4,是指针类型的长度。
5、
void main(){ char a[8] ={"hello"}; char b[8]={0}; printf("a:0x%08x\n",a); strcpy(b,"01234567"); printf("a:%s\n",a); printf("b:%s\n",b); }
结果是:
a:0xbfc2dccc
a:
b:01234567
还没想清楚。
6、
unsigned int a = 10;//unsigned的时候最高位并不是用来表示正负。 int b =-100;//int的时 最高位的1是代表负数 if(a+b >10)//a+b是全部转换成 unsigned类型才加的,所以>10 printf(">10\n"); else printf("<10\n");
打印出">10"。
7、
void main() { char a[10]; printf("%d\n",strlen(a) ); }
打印出并不是10,因为strlen(a)时是要找到'\0' 就结束的,我们并不知道a[10]的结束标记'\0'在哪里。
相关文章推荐
- 几道有意思的java编程题目
- 几道有意思的题目
- 几道有意思的JS题目
- 几道有意思的C++题目
- 今天笔试的几道题目分享-三页智力题+三页程序题
- AStar2008-2009的几道题目
- 两道有意思的题目
- ------一个有意思的题目-----------
- 几道经典c语言题目
- 几道有关局部变量和全局变量的题目
- 一个很有意思的面试题目
- 几道回文串题目(poj 2402 ,uestc 1191 ,有道资格赛3 C题)
- 有意思的题目
- 分享一个比较有意思的题目
- 某知名公司的几道面试题目
- 有意思的程序设计题目
- 几道周赛题目(bfs,dfs,kmp,快速幂运算,并查集)
- 几道sql的面试题目
- 一个有意思的题目:单循环实现乘法表
- 几个有意思的算法题目