- 论坛徽章:
- 0
|
原帖由 太平绅士 于 2009-2-10 18:38 发表 ![]()
g++也是4.
在vs2009中, sizeof( "a" ) 和 sizeof( "a" + 1 ) 都是2
没有办法解释vs将 "a"+1 当成指针什么看到的。
//
// str.cpp
// ~~~~~~~~~~~~~~~~
//
// @author <zhuxueling@pica.com>
// @data 2009-02-10
#include<typeinfo>
#include<iostream>
int main(){
const char a_c2[2] ="a";
const char a_c3[3] ="aa";
const char *pcc;
char *pc;
int i;
void *pv;
if( typeid( "a"+1) == typeid( a_c2) ) std::cout << "const char[2]" << std::endl;
if( typeid( "a"+1) == typeid( a_c3) ) std::cout << "const char[3]" << std::endl;
if( typeid( "a"+1) == typeid( pcc ) ) std::cout << "const char* " << std::endl;
if( typeid( "a"+1) == typeid( pc ) ) std::cout << "char " << std::endl;
if( typeid( "a"+1) == typeid( i ) ) std::cout << "int " << std::endl;
if( typeid( "a"+1) == typeid( pv ) ) std::cout << "void " << std::endl;
}
|
$ ./str
const char*
$ |
|