- 设有说明:char w; int x; double y; 则表达式w*x-y 值的数据类型为( )。 (智洋)
A. float B. char C. int D. double
答案:D
分析:表达式中字节数最高的为double类型,运算时运算结果类型为表达式中字节数最高的类型所以改题目的答案就当double
- 若有以下类型说明:( ) (北京凝思软件) char w; int x; float y, z; 则表达式w*x+z-y的结果为____类型。
A.float B.char C.int D.double
答案:A
分析:因为该表达式中字节数最高的为float类型,所以该表达式的最终运算结果的类型 float 类型也就是答案A
- 假定下列 x 和 y 均为 int 型变量,则不正确的赋值为( );(晟安信息)
A. x+=y++ B. ++x=++y
C. x=++y D. x++=y++
答案:D
分析:因为D的表达式对于计算机来说实际上等同于 x+ +=y++这种写法是不合法的,所以不对
- 以下程序运行后输出的结果是___10___。(电工时代)
#include <stdio.h>
int main()
{
int k = 011;
printf("%d\n", k++);
return 0;
}
分析:011是八进制形式转化为十进制就是9 所以k就是9,那么对k进行++结果就是10
- 请正确填写输出结果。(恩易物联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)_____1___(2)_____4____(3)_____1___(4)_____31___(5)___3_____
- 为了表示“a和b都不等于0”应使用( )。(山东丁一)
A. (a!=0) || (b!=0) B. allb
C. !((a==0)&&(b==0)) D. a&&b
答案:c
分析:因为(a==0&&b==0)表示的是a和b都要等于0,而!的意思是对他们取反,意思就是都不等于0
- 设 a=3,b=4,c=4,则表达式 a+b>c&&b==c&&allb+c&&b==c 的值为(1)。(易购软件)
- 已知 a = 13, a << 2的十进制数值为 ( 48 )。(易购软件)
- int x = 2, y = 3, z = 4; 则表达式 x + (y > !z)的值为( 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或者全部小于0
- int a=1, b=2, c=3, d=4, m=2, n=2; 执行 (m=a>b) && (n=c>d) 后,n=__2_(杭州快越科技)
- 语句 printf("%d \n", 12 & 012); 的输出结果是:( ) (紫光云数,新华三,石峰)
A. 12 B. 8 C. 6 D. 012
答案:8
分析:12的二进制为0000 1100,012的二进制为0000 1010
这两个相与的结果就是0000 1000,那么这个数的十进制就是8
- 有如下代码char cTwoLength = 153;那么 print("\r\n %d", cTwoLength >> 4)打印的值为 ___-7_____ (紫光云数)
14.以下所列的C语言常量中,错误的是: (华三外协,紫光云数,新华三,石峰)
A.0.1f B. 1.0e0.1
C. 'z' D. '\110'
答案:B
分析:指数只能是整数不能为小数
15.sizeof(float)是( )。(山东丁一)
A. 一个双精度型表法式 B. 一个整型表达式
C. 一个函数调用 D. 一个不合法的表达式
答案:B
分析:sizeof运算符得到的是一个整形类型
16.一个32位的机器,一个 char 代表的范围是?一个 int 代表的范围是?(广域科技)
char代表占用1个字节 int代表占用4个字节
17.下面的代码输出是什么,为什么? (信雅达)
void foo(void)
{
unsigned int a = 6;
int b = -20;
(a+b > 6) ? puts(">6") : puts("<=6");
}
答案:puts(">6")
首先-20存进去的时候
源码:1001 0100
反码:1110 1011
补码:1110 1100
拿出的时候因为和无符号类型进行运算所以会转为无符号类型
无符号类型不分正负所以会直接用1110 1100来进行运算
那么这个二进制数肯定是一个正数
6加上一个正数结果肯定大于6
18.按位或运算符(|) (深圳元征信息科技) 0x10 | 0x01 = ? 十六进制的结果是多少?
0x10的二进制:0000 1010
0x01的二进制: 0000 0001
0000 1010 | 0000 0001
=0000 1011
转成16进制就是0xb
19.按位与运算符(&) (深圳元征信息科技) 0x10 & 0x01 = ? 十六进制的结果是多少?
0x10二进制:0000 1010
0x01二进制: 0000 0001
0000 1010&0000 0001
=0000 0000
16进制结果为0
20.关于条件的书写
判断year是不是闰年
if(!((year%4==0&&year%100!=0)||(year%400==0)))
判断num是偶数
if(num%2==0)
判断num是一个三位数
if((num/10>=10)&&(num/10<100))
判断字符ch是大写字母
if((ch>='A')&&(ch<='Z'))
判断字符ch是偶数数字字符
if((ch- 48) % 2 == 0)