精华内容
下载资源
问答
  • C语言 有符号字符型输出 面试题

    千次阅读 2018-05-08 21:44:04
    因为有符号字符型其范围为-128~127 127用二进制表示为:0111 1111, 128表示为1000 0000,这里发生溢出,因为第一位为1,为符号位,表示负数,即-128 看到这里是不是一头雾水,网上有很多方法解释一同看完...

    1.第一题

    int main()
    {
        int a = 128;
        printf("%u\n", a);
        system("pause");
    }

    输出结果
    128

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        char a = 128;
        printf("%u\n", a);
        system("pause");
    }

    输出结果
    4294967168

    这里写图片描述

    因为有符号字符型其范围为-128~127
    127用二进制表示为:0111 1111,
    128表示为1000 0000,这里发生溢出,因为第一位为1,为符号位,表示负数,即-128

    看到这里是不是一头雾水,网上有很多方法解释一同看完还是不懂。所以我画了一张图来解释

    这里写图片描述
    有符号字符型范围为-128~127

    所以127的下一个数字是-128不是128

    2.第二题

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        unsigned i;
        for (i = 0; i >= 0; i--)
        {
            printf("%u\n", i);
        }
        system("pause");
    }

    这里写图片描述

    为什么输出结果是这样呢?
    无符号数永远大于0

    2.1

    #include <stdio.h>
    #include <stdlib.h>
    unsigned char i = 0;
    int main()
    {
        for (i = 0; i <= 255; i++)
        {
            puts("Hello World");
        }
    }

    3.第三题

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        char a[1000];
        int i;
        for (i = 0; i < 1000; i++)
        {
            a[i] = -1 - i;
        }
        printf("%d\n", strlen(a));
        system("pause");
    }

    strlen()遇到0就停止,那么他什么时候遇到’\0’呢?
    当i = 127的时候 a[i] = -128;那么他的下一个数字是多少呢?是-129吗?

    4.第四题

    int main()
    {
        short num = 32767;
        short int a = num + 1;
        printf("%d\n", a);
        system("pause");
    }

    32767(有符号的短整型能表示的最大值)
    结果:-32768
    这里写图片描述

    记:有符号的短整型能表示的最大值

    展开全文
  • 陷阱之有符号符号字符型数组

    千次阅读 2018-08-10 09:54:27
    因为是从-10-i,i = 0开始就行的,定义的char数组是有符号的,从-10减到-128,然后变成了127,这是由于负数的补码所致,可以查阅相关的资料。再从127减到0结束,总共有118-10+1+127-0+1=247个字符,但是strlen计算时...

    请看下面这段代码:

    #include <stdio.h>
    #include <string.h>
    int main()
    {
        char a[1000];
        int i;
        for(i=0;i<1000;i++)
        {
        a[i]=-10-i;
        }
        printf("%d\n",strlen(a));
        printf("%d\n",i);
        printf("%d\n",a[i]);
        return 0;
    
    }
    

    关于这3个答案,我相信没几个人能答得出来,下面我来公布一下正确答案:
    246
    1000
    -24
    是不是和我说的一样呢?
    下面我来解释一下为什么是这3个答案。
    首先是第一个246,为什么不是255或者1000呢?
    因为定义的是char型数组,所以最多只能有255个数组元素,去掉字符‘0’,也就是‘\0’,但是为什么不是255呢?因为是从-10-i,i = 0开始就行的,定义的char型数组是有符号的,从-10减到-128,然后变成了127,这是由于负数的补码所致,可以查阅相关的资料。再从127减到0结束,总共有118-10+1+127-0+1=247个字符,但是strlen计算时‘\0’不能算在其中,所以只有246个字符。
    第二个1000也是由于补码所致,不是你们所理解的存满了255个元素就退出循环了。
    第三个-24这个值其实是这从i = 0到i = 999中的一个随机的a[i],这是由编译器决定的,因为此时的i = 1000,数组已经越界了。

    展开全文
  • char 是有符号的 unsigned char 是无符号的,里面全是正数 1.两者都作为字符用的话是没有区别的,2.但当整数用时有区别: char 整数范围为-128到127( 0x80__0x7F), 而unsigned char 整数范围为0到255( 0...

    char   是有符号的  

    unsigned   char   是无符号的,里面全是正数

     

    1.两者都作为字符用的话是没有区别的

    2.但当整数用时有区别:  

       char              整数范围为-128127(   0x80__0x7F)    

    unsigned   char   整数范围为0255(   0__0xFF   )

    例如:如下分支语句的条件是永远不会成立的。把char改为unsigned char即可

    错误的分支语句:

             if((char)*lp>0x80)

               {

               wsprintf(szBuf,"%c%c\0",*lp);

               }

               else

               {

               wsprintf(szBuf,"%c\0",*lp);

               }

    正确的分支语句:

             if((unsigned char)*lp>0x80)

               {

               wsprintf(szBuf,"%c%c\0",*lp);

               }

               else

               {

               wsprintf(szBuf,"%c\0",*lp);

               }


    展开全文
  • int main(void){ char c[5]; scanf("%s",c); printf("%s",c); } 转载于:https://www.cnblogs.com/sunnybowen/p/8977045.html
    int main(void){
      char c[5];
      scanf("%s",c);
      printf("%s",c);
    }

     

    转载于:https://www.cnblogs.com/sunnybowen/p/8977045.html

    展开全文
  • 字符型:char(分为有符号和无符号,默认有符号)   浮点型:单精度型:float 双精度型:double 长双精度型:long double   布尔型 bool       派生类型: 指针类型(*) 枚举类型(enum)...
  • 字符型

    2019-09-29 23:48:06
    字符型: 只能装单个字符,且要... 字符型的注意点: A、字符型有三种表示形式: -单引号里放普通字符。 -单引号里放特殊的转义字符 -用字符的Unicode编号。十六进制。 B、字符完全可以当成无符号整数使用。 字...
  • 字符型数据是计算机中用来表示英文字母、符号、汉字的数据。字符型数据只占用1个字节(8位)的内存单元。 字符型常量 字符串常量是由一对双引号括起来的字符序列。例如,“CHINA”,“C program”,“$12.5”等都是...
  • C语言些许回顾: C99允许常变量,如const int a =3,...字符型数据以整型形式(ASCII码)存放,也可以用整型数组存放,占1个字节(8位,字节首位置为0) C系统在用字符数组存放 字符串常量时自动加一个'\0'作为结束符
  • 浮点型变量和字符型变量

    千次阅读 2019-04-18 21:46:04
    今天来说说起浮点型变量和字符型变量 顾名思义,浮点类型变量是用来存储带小数的实数的。 C语言中三种不同的浮点类型,以下是对这三种不同类型的声明示例: float Amount; /单精度型/ double; /双精度型/ ...
  • 关于操作有符号数的溢出问题

    千次阅读 2014-08-10 22:23:24
    在计算机中,数值的二进制表示方法主要...在32位计算机中,有符号字符型变量的取值范围是-27 ~ 27-1,有符号整型变量的取值范围是-215~ 215-1,如果将有符号整型变量赋给有符号字符型变量,则高位被截断,保留低八位。
  • 字符常量包括普通字符和转义字符,普通字符有字母,数字,专门符号,不能显示的字符。转义字符一般以"\"开头的特殊字符。  字符变量:程序中要用类型符cha定义字符变量,字符计算即ASCII码相加。  字符串变量...
  • 字符型常量

    千次阅读 2010-06-11 22:52:00
    (1)哪些是字符型常量。BCA,"a"B,'//'C,'W'D,''结果是:A是字符串;B是字符,以%C输出是/,可见第一个/是转义符号;C是字符;D不是,两个引号间啥都没有。(2)哪些是字符型常量。BCDA,CH =‘a+b’;B,CH=’/0...
  • c语言 一维字符型数组

    千次阅读 2018-03-06 10:03:42
    什么是一维字符型数组:char a[5];//这个数组中含有5各元素,每个元素都...1)一维字符型数组从“整体上看”就是一个字符串,但是其中的每一个元素还是一个字符2)关于字符串的结束符号\0 A:\0虽然2个字符,但是\...
  •   有符号的字符表示-128 ~ 127,无符号字符表示0 ~ 255。char相当于signed char还是unsigned char取决于编译器。 字符型数据在内存中是以二进制形式存放的,并不是真正的把一个字符存进内存里。在对字符型数据进行...
  • c#入门-字符型

    2020-09-12 01:44:44
    字符型char类型,用单引号括起来表示字符 字符串string类型,用双引号括起来表示字符串 字符串可以是任意长度的字符,包括这样的 string s=""; 转义 那么人要问了,如果我真的是想表达一个引号该怎么做? 使用...
  • C语言中char类型默认是有符号类型(范围是-128~127之间) 首先这个197对应的字符是在ASCII表中存在的,就像0~255的ASCII表中显示的一样,之所以会输出问号或则其他不知名符号(乱码),是因为我们的电脑里面CMD默认...
  •  在接口调用得出一个xml型字符串,一直报错 The entityname must immediately follow the '&amp;' in the entity reference   经查发现 xml的内容里存在 &amp;符号 而 通过dom4j读取时 会...
  • 0x是C语言中16进制数的表示方法...字符在计算机中以其ASCII码方式表示, 其长度为1个字节, 有符号字符型数 取值范围为-128~127, 无符号字符型数到值范围是0~255。因此在Turbo C语言中, 字符型数据在操作时将按整型数
  • 列的整型 tinyint(M) (1字节) 范围-128~127 , 0~255 smallint (2字节) ...unsigned:无符号 zerofill:零填充 M:代表宽度,在zerofill时才意义 浮点 浮点与定点: float(M,D) ,decimal(M,D) M:代表

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,713
精华内容 1,085
关键字:

有符号字符型