【问题标题】:A character constant with more then one character [duplicate]具有多个字符的字符常量[重复]
【发布时间】:2014-04-16 16:42:44
【问题描述】:

我正在检查我在 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';
}  

【问题讨论】:

  • 你用你的代码测试什么,多字符文字或未定义的行为?如果您只有关于多字符文字的问题,请删除导致未定义行为的其余代码,它与问题无关,并且会分散您对实际问题的注意力。

标签: c++ visual-studio-2013


【解决方案1】:

谁能解释为什么它是可能的?

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

多字符文字的类型为 int 和实现定义 价值。

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

【讨论】:

    猜你喜欢
    • 2011-10-20
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 2019-03-10
    相关资源
    最近更新 更多