• 携程2016研发工程师笔试题(字符大小问题)

    2016/01/16 王先生 17 评论  ,  , 

编译和执行上述c语言代码,系统将会输出什么?

  • 1  4
  • 2  2
  • 1  1
  • 2  1
3 3 收藏


直接登录
最新评论
  • 阿斌哥 硕士 2016/01/17

    答案应该是1, 4
    《C和指针》那本书上31页中间部分有提到,对于字符字面值常量,他们的类型总是int。c是char类型的变量,占一个字节大小,‘0’是字符常量,是int类型,占4个字节大小。
    (据说根据不同的编译器sizeof(‘0’)的结果可能会是1)

  • 王先生 学生 2016/01/20

    C语言: char a = ‘a’; sizeof(char) = 1 sizeof(a) = 1 sizeof(‘a’) = 4
    C++语言: char a = ‘a’; sizeof(char) = 1 sizeof(a) = 1 sizeof(‘a’) = 1
    原因如下:
    C99标准的规定,’a’叫做整型字符常量(integer character constant),被看成是int型,所以在32位机器上占4字节。
    ISO C++标准规定,’a’叫做字符字面量(character literal),被看成是char型,所以占1字节

  • HanSoul 职业搬砖 2016/01/20

    2008 是双1,我也不理解 一楼说的’0’字符型常量为啥是int型,我感觉这道题就出的不对,应该是sizeof(c)和sizeof(“0”); 这才可能是1,2

  • bobotian 待搬砖 2016/01/22

    vc是1,1

  • 说c++和vc的,认真看过题吗?c和c++不能区分,或者眼神儿不好的,就别来凑热闹了

  • BETA君   2016/02/24

    我的gcc下是1,4

    • 王先生 学生 2016/05/30

      对 应该为这样 ,但是C和C++出题会引起许多争议,由于机器和编译工具的差异会出来各种各样的结果,

  • solo 在读 2016/05/30

    我觉得出这种题目就是闲得蛋疼,自己跑一下不就知道了,不知道哪个旮旯角的知识点

  • wfl java程序员 2016/05/30

    c语言做开发好像有点难度啊

  •   2016/11/09

    这个得看是使用C++编译器还是C编译器进行编译,《C专家编程》里面有说明。C语言的规定是把sizeof(‘0’)解析为sizeof(int),而C++则规定为sizeof(‘0’)解析为sizeof(char)。结果是1 1还是1 4取决于你用的编译器是使用C++的解析方式还是C语言的解析方式