...main() { unsigned char a=8,c; c=a>>3; printf("%d",c); } 程式...

发布网友 发布时间:2024-09-29 10:06

我来回答

1个回答

热心网友 时间:2024-09-29 10:27

#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=-8593460

你的程式只是定义了一个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,结果为假。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com