C语言中的六个避坑糖,吃了再也不怕长蛀牙

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37806112/article/details/83926269

1.在C语言中,不正确的int类型(默认是在16位机器中)的常数是(A)

    A.32768     B.0     C.0xAF     D.037

 解析:

       我们常常看到int取值范围为-32768~32767,实际上int的取值范围依赖于计算机系统,在16位机器中,int占16位,取值范围为前面所说的-32768~32767(-2^16~2^16-1)。

       而在32位和64位机器中,int占32位,取值范围为-2147483648~2147483647(-2^32~2^32-1) 。ISO/ANSI C规定,int类型的最小范围为-32768到32767。

      C、D转换成10进制都没有超过这个范围。

 2.以下选项中,非法的字符常量是(C)

      A.'\17'       B.'\t'     C."\n"    D.'\xaa'

 解析:

       单引号中的字符表示一个整型值,比如’A’是一个字符常量,在ascii字符集中其值为65;
       双引号中是字符串常量,比如”A”在存储中是: A\0,即用字符’\0’表示字符串的结束。

3.下面的函数调用语句中func函数的实参个数是(A)

        func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));

       A.3           B.4      C.8       D.5

解析:

       考点逗号表达式,c语言提供一种特殊的运算符,逗号运算符,优先级别最低,它将两式联接起来,如:(3+5,6+8)称为逗号表达式,其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3+5,6+8)的值是14。(a=3*5,a*4)的值是60。

       逗号表达式的形式如下:

  表达式1,表达式2,表达式3,...... ,表达式n

  逗号表达式的要领:

  (1) 逗号表达式的运算过程为:从左往右逐个计算表达式。

  (2) 逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。

  (3) 逗号运算符的优先级别在所有运算符中最低。

举例:

void Fun(int a,int b)  
{  
     cout<<"第一个参数:"<<a<<endl<<"第二个参数:"<<b<<endl;  
}  
void main()  
{  
     Fun((1,2),(1,2+3,3+4));  
}  

 输出结果:
        第一个参数:2

        第二个参数:7

4.下面四个选项中,均是合法转义字符的选项是(A)

    A.'\''   '\\'   '\n'         B. '\018'  '\f'  'xab' 

    C.'\'   '\017'   '\"'   D.'\\0'  '\101'  'x1f'

解析:

    B'\018',8进制中怎么会出现8呢 C'\'不对的 D'\\0' 'xlf'这两个都不对

常见字符表:

转义字符

意义

ASCII码值(十进制)

\a

响铃(BEL)

007

\b

退格(BS) ,将当前位置移到前一列

008

\f

换页(FF),将当前位置移到下页开头

012

\n

换行(LF) ,将当前位置移到下一行开头

010

\r

回车(CR) ,将当前位置移到本行开头

013

\t

水平制表(HT) (跳到下一个TAB位置)

009

\v

垂直制表(VT)

011

\\

代表一个反斜线字符''\'

092

\'

代表一个单引号(撇号)字符

039

\"

代表一个双引号字符

034

\? 代表一个问号 063

\0

空字符(NULL)

000

\ddd

1到3位八进制数所代表的任意字符

三位八进制

\xhh

1到2位十六进制所代表的任意字符

二位十六进制

      '\x2f', '\013';\x表示后面的字符是十六进制数,\0表示后面的字符是八进制数。例如十进制的17用十六进制表示就是

‘\x11’,用八进制表示就是‘\021’;

5.下面程序段  结果正确的是(B)

int x = 3;
do{
	int y = x--;
	if (!y)
	{
		printf("x");
		break;
	}
	printf("#");
} while (1 <= x <= 2);

  A.是死循环       B.将输出###x      C将输出##      D含有不合法的控制表达式

  这道题一看条件表达式是错误的,直接选了D。

解析:

      while(1<=x<=2)是个死循环,这样的表达式应该一步步做出返回,先(1<=x)返回0或1,然后再判断(1<=x)<=2,返回0或1,返回值永远是1。

6.以下程序输出的结果是

int a = 252;
printf("a=%o a=%#o\n",a,a);
printf("a=%x a=%#x\n", a, a);

 

这里的"c=%#x\n"意思是:是一个格式控制符,其中c=是普通字符,%#x是格式说明,\n是转义字符;其中的%#表示的输出提示方式,如果是8进制,在前面加0,如果是十进制,不加任何字符,如果是十六进制,会加上0x 

猜你喜欢

转载自blog.csdn.net/m0_37806112/article/details/83926269
今日推荐