Day2 数据类型 运算符

1.设有说明:char w; int x; double y; 则表达式w*x-y 值的数据类型为( )。 (智洋)

          A. float    B. char     C. int     D. double

        答案:D

        分析:有double类型参与的运算式,最终结果都转化为double类型。

2.若有以下类型说明:(    ) (北京凝思软件)    char w;     int x;     float y, z;  则表达式w*x+z-y的结果为____类型。

        A.float         B.char          C.int            D.double

        答案:A

        分析:低字节自送转化为高字节其中float字节最高

3.假定下列 x 和 y 均为 int 型变量,则不正确的赋值为( );(晟安信息)

        A. x+=y++                  B. ++x=++y

        C. x=++y                    D. x++=y++

        答案:BD

        分析:含自增自减运算符的变量不能做左值,因为左值是对应内存中有确定储存地址的对象。

4.以下程序运行后输出的结果是______。(电工时代)

#include <stdio.h>

int main()

{

int k = 011;      

printf("%d\n", k++);

    return 0;

}

答案:9

分析:k是八进制,转化为十进制是9,输出的k++是后缀自增运算符,先处理变量后+1,即输出未进行自增运算时的k值。

5.请正确填写输出结果。(恩易物联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)1(2)4(3)1(4)31(5)3

分析(1)a、b均非零&&得真(2)转化为二进制a=0b0000 1111,b=0b0001 0100按位与之后为0b0000 0100=4D(3)a、b均非零||得真(4)按位或得0b0001 111D(5)0b0000 1111>>2得0b0000 0011=3D

6.为了表示“a和b都不等于0”应使用( )。(山东丁一)

A. (a!=0) || (b!=0)                     B. allb

C. !((a==0)&&(b==0))               D. a&&b

答案:D

分析:都不为0才为真。

7.设 a=3,b=4,c=4,则表达式 a+b>c&&b==c&&allb+c&&b==c 的值为(    )。(易购软件)

答案:1

分析:优先级||小于&&小于==小于其他关系运算符小于加减运算符,即原式=   7>4&&4==4&&3||8&&4==4   =   1&&4==4&&3||8&&4==4  =   1&&1&&3||8&&1  =  1||1  =  1。

8.已知 a = 13, a << 2的十进制数值为 (    )。(易购软件)

答案:52

分析:0000 1101——》0011 0100 ;<<n就相当于乘以2^n,>>n就相当于除以2^n,也是一个好思路。

9.int x = 2, y = 3, z = 4; 则表达式 x + (y > !z)的值为( )。(易购软件)

答案:3

分析:!优先级高于()高于>高于+,!z=0,y>0=1,x+1=3

10.int a=1, b=2, c=3, d=4, m=2, n=2; 执行 (m=a>b) && (n=c>d) 后,n=________(杭州快越科技)

答案:0

分析:优先级()大于>大于&&大于= 原式=(m=0)&&(n=0)=0,此外&&前为假或者||前为真时后面表达式不再运算。

11.能正确表示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,a、b一正一负结果为真B,前后括号间应该是||C,a,b一正一负时可得出结果为假

12.语句 printf("%d \n", 12 & 012); 的输出结果是:( ) (紫光云数,新华三,石峰)

A. 12        B. 8                    C. 6                    D. 012

答案:B

分析:12=0b0000 1100,012=0b0000 1010二者相&可得0b0000 1000=8

13.有如下代码char cTwoLength = 153;那么 print("\r\n %d", cTwoLength >> 4)打印的值为 ________ (紫光云数)

答案:-122

分析:存153=0b1001 1001

取-001 1001

反-110 0110

原 1001 1001>>4=1111 1001=-122   

存153=0b1001 1001

>>4(取的时候看类型,是负数补1)

0b1111 1001

反0b1111 1000

原0b1000 0111=-7

char是有符号字符型,取值范围[-128 , +127]153属于最大值越界,结果是-103,然后对-103进行右移4位的计算输出。右移规则:

- 对于无符号整数,左侧补0

- 对于有符号整数,如果原数是正数,则在左侧补0;如果原数是负数,则在左侧补1

14.以下所列的C语言常量中,错误的是: (华三外协,紫光云数,新华三,石峰)

A.0.1f                         B. 1.0e0.1       

C. 'z'                           D. '\110'

答案:B

分析:e的右侧只能是整形。0.1f是单精度浮点数常量,d是双

15.sizeof(float)是( )。(山东丁一)

A. 一个双精度型表法式      B. 一个整型表达式

C. 一个函数调用             D. 一个不合法的表达式

答案:B

分析:sizeof是一个操作符不是函数所以sizeof(float)是一个整型表达式而不是一个函数的调用更不是不合法的表达。

16.一个32位的机器,一个 char 代表的范围是?一个 int 代表的范围是?(广域科技)

答案:一个 char 代表的范围是-128~127,一个 int 代表的范围是-2^31~2^31.

分析:char一个字节,int4个字节,一个字节是8个bit

17.下面的代码输出是什么,为什么? (信雅达)

void foo(void)

{

    unsigned int a = 6;

    int b = -20;

    (a+b > 6) ? puts(">6") : puts("<=6");

}

答案:>6

分析:有无符号的int同时进行运算时有符号int转化为无符号int

即b=0b1001 0010=148D然后加上6得到154>6,根据三目运算符的执行顺序,为真执行puts(“>6”),即最终输出为>6

18.按位或运算符(|) (深圳元征信息科技)  0x10 | 0x01 = ? 十六进制的结果是多少?

答案:0x11

分析:按位或,即0x11

19.按位与运算符(&) (深圳元征信息科技)  0x10 & 0x01 = ? 十六进制的结果是多少?

答案:0x00

分析:按位与,即0x00

20.关于条件的书写

判断year是不是闰年   

if(                     )

判断num是偶数

if(                     )

判断num是一个三位数

if(                     )

判断字符ch是大写字母

if(                     )

判断字符ch是偶数数字字符

if(                     )

答案:(1)!((year%4==0&&year%100!=0)||(year%400==0))

(2)num%2==0

(3)(int)(num/100)!=0 num>=100&&num<=999

(4)ch>'A'&&ch<'Z'

(5)(int)ch%2==0&&ch>='0"||ch<='9'

分析,第一个4年一闰百年不闰,400年一闰,先与后或

第二个,与2取模余0即为偶数

第三个,判断百位,除以100之后取整保留整数部分不为0即百位不为0即为三位数   不如直接判断在不在100~999之间,大道至简

第四个,判断是否在字符'A''Z'之间,也可以判断其整型值是否在65与90之间

第五个,强制转化类型之后与2取模看是否余0,若为真即原字符数字为偶数。再判断是否在数字字符的范围里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值