这些符号怎么来:+ !!“” = 1? c ++

时间:2018-10-13 17:19:45

标签: c++

最近我的朋友给我看了一篇文章,显示在C ++中+!“” = = 1。 这属于什么主题?我在哪里可以查看?为什么会这样呢?我在任何地方都找不到有关此信息

2 个答案:

答案 0 :(得分:3)

  

这属于什么主题?

隐式转换。还有 operators 。还有字符串文字。所有这些都是表达式的子主题。

  

我在哪里可以查看?

c ++标准是权威规范。也有描述规则的非官方网站。

  

为什么这是真的?

""是(n个空)字符串文字。字符串文字是(字符的)数组。数组衰减到指向第一个元素的指针。当操作数是非null指针时,逻辑NOT运算符(!)的计算结果为false。当操作数为false时,NOT运算符的值为true。一元加算术运算符将操作数隐式转换为整数。 True转换为1。

答案 1 :(得分:1)

””const char的数组。在大多数情况下,数组会衰减为指向其第一个元素的指针。这就是这里发生的情况。将!应用于指针时,如果指针为空指针,则结果为true,否则为false。该指针不是空指针,因此!””的值为false!falsetrue,所以!!””true。一元+会将较小的类型提升为int;在这种情况下,它将值truebool提升到int。将true提升为int时,它变为1。