初学C语言老师留道作业题#include<stdio.h> int main() { short a,b; a=32767; b=a+1; printf("%...

初学C语言老师留道作业题#include<stdio.h>
int main()
{
short a,b;
a=32767;
b=a+1;
printf("%d,%d\n",a,b);
return 0;
}结果是什么?还有原理

第1个回答  2012-02-29
32767,-32768

初学C语言老师留道作业题#include<stdio.h> int main() { short a,b...
原理:没什么很深奥的原理,就是简单的定义赋值

#include <stdio.h> main() { short a,b,c; int d; a=32767; b=a+1...
两个的原因都是数据溢出 short在32位系统中占2字节长度,也就是有16位。只能表达-32768~32767共计65536个数字。32767(D) = 0111 1111(B),加上1后为1000 0000(B),由于是有符号数据,所以第一位只表示符号,根据补码规则,数据为-32768 int在32位系统中占4字节长度,也就是有32位。可以表...

c语言编程:输入正整数a和b,其中a和b都小于32767,求a\/b的值.要求精确到...
这个显然是高精度的问题,直接用系统的double是不能达到200位的精度的,所以只能手动模拟计算除法。程序如下:#include <stdio.h> int main(){ int i, a, b, n, s;char result[201] = {0};scanf("%d %d %d", &a, &b, &n);s = a \/ b;a = a % b;for( i = 0; i < n;...

main() { long int a,b; a=32767; b=a+1; printf("%d,%d",a,b);getc...
你的编译器long int取值是-32768~32767(二进制16位数),C语言是用二进制表示数值,也就是说long int取值范围为负2的16次方到2的16次方减1(正数从0开始到n-1),当a=32767是就是long int的最大大值,二进制表示为1111111111111111十六个一,当程序加一时,就变成17位(最左一位为1,其余位为0...

C语言:int a=32767,b …结果多少?
然后加上一(此时第一个1变成了0,把它当作正数)也就是0111 1111 1111 1111 增加1为 1000 0000 0000 0000 结果就是-32768.如果在VC中,int占用四个字节,所以结果为32768。前缀自增(自减)操作是先自增,然后传递数值;后缀自增(自减)操作是先传递数值,然后a的值增加 。0.

选择.设C语言中,int类型数据占2个字节,则short类型数据占几个字节_百...
short是占两个字节。short在C语言中是定义一种整型变量家族的一种,shorti;表示定义一个短整型的变量i。依据程序编译器的不同short定义的字节数不同。标准定义short短整型变量不得低于16位,即两个字节。编译器头文件夹里面的limits.h定义了short能表示的大小:SHRT_MIN~SHRT_MAX。在32位平台下如...

求c语言运行结果: void main() { short a,b,c,d;
直观吧,这是图片,文字是a=32767,b=-32768,c=-32768, d=-32767,

#include<stdio.h> void main() { char a='本金',b='年数',c='年利率...
main() {int x ;printf(“%d\\n”,(x=4*5,x*2,x+20));}A)20B)40C)60D)809.执行以下程序后的输出结果是( )。#include "stdio.h"void main(){int i = 0, j = 0, a = 6;if ((++i0)||(++j0)) a ++;printf("i=%d, j=%d, a=%d\\n", i, j, a);}A)i=0, j=0, a=...

c语言怎么将变量b改成long型?
int main(){ int a,b;a=32767;b=a+1;printf("%d,%ld\\n",a,(long)(a+1));return 0;} 这样不知道行不行,我这没有TC:include<stdio.h> int main(){ int a,b;a=32767;b=a+1;printf("%d,%ld\\n",a,(long)b);\/*输出的第二项为强制转换类型函数的返回值*\/ return 0;} ...

#include<stdio.h> int main() { unsigned int b=1; char a=-1; prin...
1) a-b: a提升为unsigned int = 0xffff ffff, a -b的结果是unsigned int = 0xffff fffe 2) printf("%d", a-b), 因为你用%d就是int输出,等于强制类型转换为int,无符号的0xffff fffe 就变成 -2 了 3) printf("%d",a-b<0), 0是常量,常量默认为int,与unsigned int结果比较也要...

相似回答