首页 > 编程语言 > 详细

C语言面试题

时间:2020-05-13 23:28:06      阅读:59      评论:0      收藏:0      [点我收藏+]

 1.下面的代码能通过编译吗?如果能,有什么潜在的问题?

#include <stdio.h>
void
main(){ char* ptr = (char*)malloc(10); if(NULL == ptr){ printf("\n malloc failed\n"); 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("\n%d..%d..%d\n",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("\n [%c] \n" , *ptr++);
    printf("\n [%c] \n" , *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\t%d",m,n);
}    

 

答案:1  2

考点:逻辑短路问题

 

C语言面试题

原文:https://www.cnblogs.com/shengtudai/p/12885448.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!