C语言--每日五道选择题--Day5

第一题 (做错了)

1、请阅读以下程序,其运行结果是( )

int main()
{
    char c='A';
    if('0'<=c<='9') 
        printf("YES");
    else 
        printf("NO");
    return 0;
}

A: YES 

B: NO 

C: YESNO 

D: 语句错误

答案及解析 A

0'<=c<='9'并非判断x大于等于字符0,小于等于字符9

而是先执行'0'<=c,使用这个表达式的结果再和'9'比较

'0'的ASCII码值是48,'A'的ASCII码值是'65',故'0'<c是真值1

1无疑是小于字符'9'的,最终是真

第二题

2、假设编译器规定 int 和 short 类型长度分别为32位和16位,若有下列C语言语句,则 y 的机器数为( )

unsigned short x = 65530;
unsigned int y = x;

A: 0000 7FFA 

B: 0000 FFFA 

C: FFFF 7FFA 

D: FFFF FFFA

答案及解析 B

unsigned short类型的x变量2个字节保存了65530,十六进制形式为0xFFFA,x给y赋值时会整型提升,而无符号数在提升时高位补0,其实就相当于把x的值放在了y的低的两个字节空间上,所以y的十六进制表示为0000 FFFA

第三题

3、下列程序的输出结果是什么( )

#include<stdio.h>
int main()
{
    int n = 1001;
    int ans = 0;
    for(int i = 1; i <= n; ++i)
    {
        ans ^= i % 3;
    }
    printf("%d",ans);
    return 0;
}

A: -2 

B: 0 

C: 1 

D: 2

答案及解析 B

i % 3 的值按1、2、0循环,可推算出ans按1、3、3、2、0、0循环,循环进行1001次,而1001%6=5,也就是ans按规律得到的第5个数为最终结果,故ans=0

第四题

4、C 语言中,下列运算符优先级最高的是 ( )

A: ! 

B: % 

C: >> 

D: ==

答案及解析 A

对优先级不了解的可以看我的这个博客http://t.csdnimg.cn/KtoX1

第五题

5、要使 a 的低四位翻转,需要进行操作是( )

A: a | 0xF 

B: a & 0xF 

C: a ^ 0xF 

D:  ~a

答案及解析 C

十六进制数0xF是1111,参与运算时整型提升,高位都是0。

所以0xF二提升后进制就是0000 0000 0000 0000 0000 0000 0000 1111

低四位和1异或,0^1是1,1^1是0;高位和0异或,0^0是0,1^0是1。

故而可以通过异或F使得a的低四位翻转,并保持高位不变

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

终将向阳而生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值