#include main() { unsigned char a=8,c; c=a>>3; printf("%d",c); } 程式执行后的结果是?

 我来答
黑科技1718
2022-11-19 · TA获得超过5872个赞
知道小有建树答主
回答量:433
采纳率:97%
帮助的人:81.7万
展开全部

#include <stdio.h> main() { unsigned char a=8,c; c=a>>3; printf("%d\n",c); } 程式执行后的结果是?

c=a>>3 c这个变数没有定义?
=00001000>>3
=00000001
=1
因此,程式执行结果为:1

#include<stdio.h> int main() { char c; c='\376'; printf("%d\n",c); return 0; } 求 程式执行结果

八进位制 376
二进位制 1111 1110
十六进位制 FE %X
10 进位制有符号 -2 %d
10 进位制无符号 254 %u

试了一下,结果是:-2.

-2 因为 对char型来说8进位制376就是-2

#include<stdio.h> main() { char a; a=255; printf("%d\n",a++); } 结果是:-1

a++没有用,他返回的是++之前的值,还是255.
char是一个8位的有符号型别,他的取值范围是-128 ~ 127,当超过最大值时,自动从最小值开始往上加,也就是说如果a=128,那么他实际上是-128。
255 = 128 + 127 = -128 + 127 = -1

#include <stdio.h> void main() { char c=256; int a=c; printf("%d\n",a); }

char只有1个位元组(BYTE),也就是8个位(bit)
您的char c=256;256用二进位制表示的话是100000000,也就是低8位全部为0。而char型别的c只能储存8bit的资料(也就是低8位)所以实际上c=0。
同理,255的二进位制表达方式为11111111,因为char型别是有符号的型别(其对应的无符号型别为unsigned char),所以其最高位为符号位,符号位为0时时正数,为1是负数。而取值方法使用“补码"。
至于补码的详细资讯,请参考
相信看完之后您就理解了。

#include <stdio.h> void main() { int x; printf("x=%d\n",x); } 为什么程式执行的结果是x=-858993460

你的程式只是定义了一个n,却没有给n赋值,输出的结果当然是乱七八糟的啦!看来你还刚接触C语言,呵呵。

#include<stdio.h>main(){inta=12,c;c=(a<<2)<<1;printf("%d\n",c);}程式执行结果是多少,麻烦写详细点,

结果是96

a=12;
a<<2;/*a左移运算 相当于乘法 左移一位为乘2,两位就乘4 */
(a<<2)<<1;/* 再左移一位 再乘2 c=a*2*2*2=12*8=96 */

#include<stdio.h>main(){printf("%d\n",NILL);}程式执行后的输出结果是 A)0 B)1 C)-1 D)NULL没定义,出错

A
纠正一下 printf("%d\n",NULL); 中那个是NULL不是NILL
应该在stdio.h这个标头档案中有预处理:
#define NULL 0

#include<stdio.h> main() { int a=5,b=4,c=3,d; d=(a>b>c); printf("%d\n",d); } }

a>b>c是从左向右计算的:(a>b)>c,先计算a>b结果为真,也就是1,再用这个结果计算1>c,结果为假。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式