c/c++语言开发共享C中“3”和“3”之间的差异

我尝试在C中运行以下程序并获得一些输出。 你能帮帮我吗?

#include int main() { char x='A'; printf("%d%d%d",sizeof("3"),sizeof('3'),sizeof(3)); return 0; } 

在ubuntu 11.04 32位中使用gcc收到的输出为2 4 4。

同样在其他计划中: –

 #include int main() { char x='A'; printf("%d%d",sizeof('A'),sizeof(x)); return 0; } 

在ubuntu 11.04 32位中使用GCC收到的输出为4 1。

你能帮我解决为什么输出是这样的吗???

    在C中, char文字是整数类型,因此sizeof('3') == sizeof(int) 。 有关详细信息,请参阅此C FAQ 。

    这是C和C ++不同的领域之一(C ++ sizeof('3')1 )。

    实际上,纠正我之前的断言sizeof("3")将产生2,因为“3”被视为2元素字符数组。

    6.3.2.1/3

    除非它是sizeof运算符或一元&运算符的操作数,或者是用于初始化数组的字符串文字,否则将类型为”array of type”的表达式转换为类型为”指针的表达式type”指向数组对象的初始元素,而不是左值。

    在C.

    3 :整数文字,输入int
    '3' :char literal,输入int
    "3" :字符串文字:类型char[2]

    在第二个示例中, x表示char类型的对象。

    ‘3’转换为int类型,即4个字节。 但是“3”是一个包含两个字节的字符串。 第一个字节是char 3,第二个是附加到所有字符串的空终止符。

    “C”是

     char mystring[2]; mystring[0] = 'C'; mystring[1] = ''; 

    虽然’C’是

     int mychar; mychar = 'C'; 

    '3'是一个字符常量。 在C中,字符常量具有int类型(在C ++中,它们具有char类型)。 因此, sizeof '3' == sizeof (int)

    "3"是一个字符串文字。 它是一个2元素的char数组(C ++中的const char ),其值为{'3', ''}sizeof (char) == 1根据定义,因此, sizeof "3" == 2。

    3是整数常数。 它有int类型。 因此, sizeof 3 == sizeof (int)

    变量x声明为char ,因此sizeof x == 1。

      以上就是c/c++开发分享C中“3”和“3”之间的差异相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/562334.html

      (0)
      上一篇 2021年2月4日
      下一篇 2021年2月4日

      精彩推荐