c语言面试经常问到的问题有:
1、C语言的主要特征是什么?
C是一种过程语言。C语言的主要功能包括对内存的低级访问,简单的关键字集和简洁的样式。这些功能使其适用于诸如操作系统或编译器开发之类的系统编程。
2、i ++和++i有什么区别?
1)表达式“i ++”返回旧值,然后递增i。表达式++i递增该值并返回新值。
2)后缀++的优先级高于前缀++。
3)后缀++的关联性从左到右,前缀++的关联性从右到左。
4)在C ++中,++i可用作左值,但i ++不能用作左值。在C中,它们都不能用作l值。
3、什么是l值?
l值或位置值是指可以在赋值运算符左侧使用的表达式。例如,在表达式“a = 3”中,a是l值,而3是r值。
l值有两种类型:
“不可修改的l值”表示无法修改的l值。const变量是“不可修改的l值”。
“可修改的l值”表示可以修改的l值。
4、数组和指针有什么区别?
指针用于存储动态分配的数组的地址,以及用于作为参数传递给函数的数组。在其他情况下,数组和指针是两个不同的东西,尽管数组和指针是不同的东西,但是数组的以下属性使它们看起来相似。
5、C语言中的“循环”数据类型是指什么?
所谓的“循环”数据类型,其实就是某种类型的数据溢出后,又从头开始存储。一个典型的例子是unsigned char变量若已经等于255,仍然对其加1,那么该变量就会溢出从头开始,也即等于零:
unsigned char a = 255。
a = a+1// a等于0。
分类: 电脑/网络 >>程序设计 >>其他编程语言问题描述:
1.域宽小于实际宽度时应如何处理?
2.默认的域宽与精度各是多少?
3.精度说明大于或小于实际精度时,应如何处理?
4.FLOAT与DOUBLE的最大精度是多少?
5.如何处理符号位?
6.多余的小数位是被截断还是舍入?
解析:
事实上,您问的问题比较泛,如果结合使用的编译器类型和具体例子来问会比较好些。下面也只是泛泛而谈。
1、域宽小于实际宽度时,通常输出结果以实际宽度为准,如果需要以域宽来输出,那么实际结果需要截断。比如将结果以实际宽度输出到某个字符数组中,再截断。
2、默认的域宽为8位,精度为6位。
3、精度说明大于实际精度时,输出补余;小于实际精度时,输出截断。
4、FLOAT的最大精度是10的负44次方;DOUBLE的最大精度是10的负323次方。
5、整型数据的符号位出现在最高字节的最高位;浮点型数据则出现在字节中间的某个位上。不明白什么叫如何处理符号位?
6、多余的小数位是截断和舍入取决于不同的编译环境。应当结合自己使用的编译环境做一下测试即可明白。
这是由于用%d读100.0时,读到“.”就结束了(读到前面的整数),然后“.”还留着,下一次再读时又遇到这个“.”又结束了(没读入数据)。
下面是对这个程序作了一点修改后,便于观察程序读到了一些什么:
#include<stdio.h>
int main()
{ int a,i,j
scanf("%d",&a)
int num[2][2]
for(i=0i<ai++)
{ for(j=0j<2j++)
scanf("%d",&num[i][j])
}
for(i=0i<ai++)
{
{ for(j=0j<2j++)
printf("%5d ",num[i][j])
printf("\n")
}
}
}