数据类型 运算符练习题

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

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

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

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

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

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

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

X++是后缀自增运算符,所以X先返回自己的原本值,Y同理,不可以讲一个已经返回的值赋给另外一个已经返回的值,X++返回的是希望的是有一个变量来储存值,也就是左值。

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

#include <stdio.h>

int main()

{

int k = 011;

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

    return 0;

}

  1. 请正确填写输出结果。(恩易物联2)

int main()

{

    int a = 15;    0000 1111

    int b = 20;    0001 0100

    int c;

    a && b = ? (1)

    a & b = ? (2)  0000 1111 & 0001 0100=0000 0100=4

    a || b ? (3)

    a | b = ? (4)   0000 1111 | 0001 0100=0001 1111=31

    a >> 2 = ? (5)   0000 1111>>2=0000 0011=3

}

(1)____1___(2)____4_____(3)____1____(4)____31____(5)___3_____

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

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

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

                        1        1       1      1

  1.  设 a=3,b=4,c=4,则表达式 a+b>c&&b==c&&allb+c&&b==c 的值为(  1  )。(易购软件)
  2. 已知 a = 13, a << 2的十进制数值为 (  52  )。(易购软件)

0000 1101<<2=0011 0100=52

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

                              2  +   1

  1. 能正确表示a和b同时为正或同时为负的逻辑表达式是:(D ) (宇视科技,紫光云数,新华三,石峰)

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

  1. int a=1, b=2, c=3, d=4, m=2, n=2; 执行 (m=a>b) && (n=c>d) 后,n=____0____(杭州快越科技)                                  0     第一个表达式已经是0,根据短路特性不用看后面的了     
  2. 语句 printf("%d \n", 12 & 012); 的输出结果是:(B ) (紫光云数,新华三,石峰)

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

12:0000 1100  

012(八进制):8+2=10,二进制为0000 1010

0000 1100&0000 1010=0000 1000=8

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

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

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

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

提示到这里,你试试计算一下吧,一定要理解清楚原理啊

      153=10011001,向右移动4位为11111001,正数的原码反码补码都一样,所以读取到的为补码11111001,所以原码为10000111,所以结果为-7  

  1.  —以下所列的C语言常量中,错误的是:B (华三外协,紫光云数,新华三,石峰)
  1. 0.1f   B. 1.0e0.1

C. 'z' D. '\110'

  1. sizeof(float)是(B )。(山东丁一)

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

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

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

   [-128,+127],  [-2^31,2^31-1]

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

void foo(void)

{

    unsigned int a = 6;

    int b = -20;

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

}

首先,在存unsigned int 定义的6时,他的二进制补码就是0000 0110,而对于-20,它的原码是1001 0100,补码就是1110 1100,这时计算机会将其转换为无符号int,所以二者相加一定大于6,这是以八位为例,若是16为,32位,则更不需要多说,所以输出>6

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

  0x10=0001 0000

  0x01=0000 0001

 0001 0000 | 0000 0001=0001 0001=0x11

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

  0x10=0001 0000

  0x01=0000 0001

  0001 0000 &0000 0001=0x0

  1. 关于条件的书写

判断year是不是闰年

if( (year%400==0) || (year%4==0)&&( year%100!=0 ) )

判断num是偶数

if(   num%2==0     )

判断num是一个三位数

if(  num/100>=1    )

判断字符ch是大写字母

if(    ch<='Z'&& ch >='A'                )

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

if(    (ch%2==0 )&& (ch>='9'&& ch<='0')                )

昨天有事耽搁了,赶工的急,有问题望指出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值