具有多个字符的字符常量

时间:2014-03-12 13:40:52

标签: c++ visual-studio-2013

我正在检查我在stackoverflow上看到的一些答案,并改变了一条根据一位非常有经验的程序员不应该工作的方式,令人惊讶的是它确实如此。任何人都可以解释为什么有可能吗? 问题是一个字符常量,有一个以上的字符(我使用Visual Studio 2013)

// stack.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
using std::cout;


int * foo()
{
    int a = 5;
    return &a;
}

int main()
{
    int* p = foo();
    cout << *p << '  ';  // this line should not compile but it did???
    *p = 8;
    cout << *p << '\n';
}  

1 个答案:

答案 0 :(得分:3)

  

任何人都可以解释为什么有可能吗?

因为语言允许这样的事情;它被称为多字符文字。用C ++ 11 2.14.3 / 1:

的话来说
  

多字符文字具有类型int和实现定义   值。

通常,每个字符(足够短的文字)将映射到int值的一个字节,以便'ab''ba'具有不同的值;有关详细信息,您必须查阅编译器的文档。