c ++ 14 vs 11 - sizeof返回不同的值?

Bry*_*Fok 3 c++ c++11 c++14

对于同样的程序,c ++ 11返回2 1 2,但对于c ++ 14,返回2 1 1给我.我很迷惑..

#include <iostream>
#include <string>
using namespace std;
int main()
{
    char a[2];
   cout << sizeof(a) << endl; 

   std::string b("a");
   cout << b.size() << endl;


   char c[b.size() + 1];
   cout << sizeof(c) << endl;

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

M.M*_*M.M 15

char c[b.size() + 1]; 在标准C++中不允许任何版本.

如果你发现编译器接受了它,那么它是一个编译器扩展,所以你应该查阅你使用的编译器的文档.


R S*_*ahu 9

以下行不是标准C++.

char c[b.size() + 1];
Run Code Online (Sandbox Code Playgroud)

一些编译器支持它作为扩展.预计他们不会确认任何标准.当他们评估时,他们可能会从他们的实施角度返回任何有意义的东西sizeof(c).