C语言面试题
Posted shengtudai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言面试题相关的知识,希望对你有一定的参考价值。
1.下面的代码能通过编译吗?如果能,有什么潜在的问题?
#include <stdio.h>
void main(){ char* ptr = (char*)malloc(10); if(NULL == ptr){ printf(" malloc failed "); return; }else{ //do something free(ptr); } return; }
①缺少头文件 stdlib.h
②在某些编译器下,main函数不能返回void类型,最好改成int,return 0;
③main函数的标准写法
int main(void){
return 0;
} int main(int argc, char* args[]){
return 0;
};
2.下面代码会输出什么?
#incluede<stdio.h> int main(){ int a = 10, b = 20, c = 30; printf(" %d..%d..%d ",a+b+c,(b = b * 2),(c = c *2)); return 0; }
答案:110..40..60
注意:C语言中,printf函数从左向右输出,但在计算时是从右向左计算
补充:浮点数的格式化输出:%8.2f :8表示输出宽度;.2表示保留小数点后两位
3.下面操作会输出什么?为什么?
#include <stdio.h> int main(void){ char* ptr = "Linux"; printf(" [%c] " , *ptr++); printf(" [%c] " , *ptr); return 0; }
答案:L i
考点:运算符优先级问题。伪运算符优先级最高,单目运算符第二;算术运算符>比较运算符>位运算符>逻辑运算符;赋值运算符优先级倒数第二,逗号运算符优先级最低;自右向左结合的只有单目/三目/赋值运算符
4.写出下面程序的输出
#include <stdio.h> int main(){ int a = 5,b=6,c=7,d=8,m=2,n=2; (m=a<b)||(n=c>d); printf("%d %d",m,n); }
答案:1 2
考点:逻辑短路问题
以上是关于C语言面试题的主要内容,如果未能解决你的问题,请参考以下文章