题目:设有说明:char w; int x; double y; 则表达式w*x-y 值的数据类型为( )。 (智洋)
A. float B. char C. int D. double
答案:D
分析:不同数据类型进行运算时,自动转换成最高级的数据类型,然后进行运算,运算结果一定是最高级的数据类型,题目中double类型是最高级的,所以选D
题目:若有以下类型说明:( ) (北京凝思软件) char w; int x; float y, z; 则表达式w*x+z-y的结果为____类型。
A.float B.char C.int D.double
答案:A
分析:不同数据类型进行运算时,自动转换成最高级的数据类型,然后进行运算,运算结果一定是最高级的数据类型,题目中float类型是最高级的,所以选A
题目:假定下列 x 和 y 均为 int 型变量,则不正确的赋值为( );(晟安信息)
A. x+=y++ B. ++x=++y
C. x=++y D. x++=y++
答案:D
分析:因为x++先运算后增1,x在进行运算时返回的是x的值,是一个常量,不是一个变量,对于赋值运算是不能给一个数值赋值的,因此选D
题目:以下程序运行后输出的结果是______。(电工时代)
#include <stdio.h>
int main()
{
int k = 011;
printf("%d\n", k++);
return 0;
}
答案:9
分析:011前值便是方法,表示八进制数,对应十进制值为1*8+1*1=9,k++后置++,先运算后增1,所以先按十进制打印,得到9
题目:请正确填写输出结果。(恩易物联2)
int main()
{
int a = 15;
int b = 20;
int c;
a && b = ? (1)
a & b = ? (2)
a || b ? (3)
a | b = ? (4)
a >> 2 = ? (5)
}
(1)________(2)_________(3)________(4)________(5)________
答案:1,00000000 00000000 00000000 0000 0100,1,00000000 00000000 00000000 0000 0100,00000000 00000000 00000000 00000011
分析:a和b为非0,对于逻辑运算,非0即为真,所以a&&b即真&&真,结果为真,即值为1;
a二进制为:00000000 00000000 00000000 00001111 b二进制为:00000000 00000000 00000000 0001 0100 a&b 按二进制位做与,同时为1为1,其余为0,结果:00000000 00000000 00000000 0000 0100 ;a和b为非0,对于逻辑运算,非0即为真,所以a||b即真||真,结果为真,即值为1;a|b按二进制做或,同时为0为0,其余为1,结果:00000000 00000000 00000000 00011111;a>>2按二进制右移2位,左边补0,右边舍弃,结果:00000000 00000000 00000000 00000011
题目:为了表示“a和b都不等于0”应使用( )。(山东丁一)
A. (a!=0) || (b!=0) B. allb
C. !((a==0)&&(b==0)) D. a&&b
答案:D
分析:a&&b,对于逻辑与,只有a和b均不等于0,即都为真时,结果才为真,所以能表示a和b都不等于0
题目:设 a=3,b=4,c=4,则表达式 a+b>c&&b==c&&allb+c&&b==c 的值为( )。(易购软件)
答案:1
分析:a+b=7>c关系成立为1,1&&b==c,因b==c关系成立为1,1&&1为1,a为非0为真,1&&a为1,1||b+c,b+c结果为非0为真,1||b+c为1,1&&b==c,b==c关系成立为1,所以1&&b==c为1&&1结果为1
题目:已知 a = 13, a << 2的十进制数值为 ( )。(易购软件)
答案:52
分析:a二进制表示00001101 a<<2二进制左移2位,左边舍弃,右边补0,结果为00110100,十进制数为1*2^5+1*2^4+1*2^2=52
题目:int x = 2, y = 3, z = 4; 则表达式 x + (y > !z)的值为( )。(易购软件)
答案:3
分析:!z为对z逻辑非,z为非0即为真,非为0,y>0关系成立,则为真为1,所以x+(y>!z)为x+1=3
题目:能正确表示a和b同时为正或同时为负的逻辑表达式是:( ) (宇视科技,紫光云数,新华三,石峰)
A. (a >= 0 ll b >= 0) && (a < 0 ll b < 0)
B. (a>=0 && b>=0) && ( a < 0 && b < 0)
C. (a + b > 0) && (a + b <= 0)
D. a * b > 0
答案:D
分析:a*b>0,在a和b同时大于0时成立或a和b同时小于0时成立,所以选D
题目:int a=1, b=2, c=3, d=4, m=2, n=2; 执行 (m=a>b) && (n=c>d) 后,n=________(杭州快越科技)
答案:n=2
分析:a>b关系不成立,为假,结果为0,0赋值给m,m值为0,因为0与其他逻辑与的结果都为0,所以&&后面的表达式是不需要运算求出结果的,因此,n=c>d是不执行运算的,所以n的结果不变为2
题目:语句 printf("%d \n", 12 & 012); 的输出结果是:( ) (紫光云数,新华三,石峰)
A. 12 B. 8 C. 6 D. 012
答案:B
分析:12二进制为00001100 012二进制表示00001011,按二进制位与结果为:00001000,十进制为8
题目:有如下代码char cTwoLength = 153;那么 print("\r\n %d", cTwoLength >> 4)打印的值为 ________ (紫光云数)
答案:-7
分析:因为char有符号类型,取值-128~127之间,153超出127,153-127=26,128为-128,所以153为-128+25=-103,原码-103二进制 11100111,反码二进制10011000,补码二进制10011001,右移4位,左边补符号位即1,右边舍弃,结果为11111001,反码11111000,原码10000111,十进制为-7
题目:以下所列的C语言常量中,错误的是: (华三外协,紫光云数,新华三,石峰)
A.0.1f B. 1.0e0.1
C. 'z' D. '\110'
答案:B
分析:指数表示常量e右边为整数
题目:sizeof(float)是( )。(山东丁一)
A. 一个双精度型表法式 B. 一个整型表达式
C. 一个函数调用 D. 一个不合法的表达式
答案:B
分析:sizeof是关键字,求解类型/变量所占空间的大小,单位为字节,sizeof(float)表示求解float所占空间的大小,结果为4
题目:一个32位的机器,一个 char 代表的范围是?一个 int 代表的范围是?(广域科技)
答案:有符号char范围为-2^(8-1)~2^(8-1)=-128~127,有符号int范围为-2^(32-1)~2^(32-1)=-2^31~2^31-1
题目:下面的代码输出是什么,为什么? (信雅达)
void foo(void)
{
unsigned int a = 6;
int b = -20;
(a+b > 6) ? puts(">6") : puts("<=6");
}
答案:无符号int型与有符号int型运算是有符号int型转为无符号int型,-20内存中补码是1开头的,当作无符号int型是一个很大的数值,所以,a+b是一个很大的值,所以大于6成立,所以输出>6
题目:按位或运算符(|) (深圳元征信息科技) 0x10 | 0x01 = ? 十六进制的结果是多少?
答案:0x10二进制 00010000 0x01二进制 00000001 按位或为 00010001,十六进制结果为0x11
题目:按位与运算符(&) (深圳元征信息科技) 0x10 & 0x01 = ? 十六进制的结果是多少?
答案:0x10二进制 00010000 0x01二进制 00000001 按位与为 00000000,十六进制结果为0x00
题目:关于条件的书写
判断year是不是闰年
if( )
判断num是偶数
if( )
判断num是一个三位数
if( )
判断字符ch是大写字母
if( )
判断字符ch是偶数数字字符
if( )
答案:if(year%4==0&&year%100!=0||year%400==0),if(num%2==0),if(num>=100&&num<=999),if(ch>='A'&&ch<='Z'),if(ch>='0'&&ch<='9'&&ch%2==0)