注册 登录
编程论坛 C++教室

基本赋值形式问题,虽然简单,但是感觉很新鲜

蚕头燕尾 发布于 2013-08-05 14:42, 850 次点击
《C++ primer plus》

看到这样一种赋值形式:

char c1 {31325};

自己运行了一下并不对

有经验的朋友能给个解释么?

13 回复
#2
蚕头燕尾2013-08-05 14:45
还有这么写的:

char c1={66};

这个倒是可以理解,也可以运行

但是我说的第一种到底是什么意思额?

#3
wp2319572013-08-05 14:45
程序代码:
#include <stdio.h>

int main()
{
    char c1= {31325};
    printf("%c\n",c1);
    return 0;
}
#4
wp2319572013-08-05 14:46
char c1 {31325};

应该是印刷错误   vs2010并不支持这个东东
#5
蚕头燕尾2013-08-05 14:56
我也感觉有问题,但是书上还是很明显的将我说的第一种和第二种区别开来讲的

感到很是奇怪

而且不止一处这么写的

偶尔一处还有可能是印刷问题,但是很多地方这么写就有点意思了

#6
rjsp2013-08-05 14:59
C++中初始化形式太多了(当然,都是必须的),却没有一种统一的初始化方式,嗯,于是C++11标准加了一个 Uniform initialization

“自己运行了一下并不对” --- 你这话比较搞^_^
#7
蚕头燕尾2013-08-05 21:42
The new C++11 feature 'Uniform Initialization' is not supported in VS2012

略悲伤……

#8
TonyDeng2013-08-06 12:20
那个是直接初始化,与用等号的赋值初始化相区别,有很大的本质不同,楼主都没仔细看书,书上解释得很详细。
#9
蚕头燕尾2013-08-06 14:01
现在有哪种编译器支持这种赋值方式吗?
#10
TonyDeng2013-08-06 14:02
所有C++编译器都支持。注意:是声明的时候初始化,不是赋值!
#11
TonyDeng2013-08-06 14:04
C++ Primer用的是圆括号,不是花括号,多了个plus就不知道了。书上强调的也仅是我说的那种。
#12
蚕头燕尾2013-08-06 14:12
#include<iostream>
using namespace std;
int main()
{
    char c1 {66};
}

是这样意思吗?

这段代码在VS2012里不能编译。

#13
海上圣明悦2013-08-06 15:21
#include <iostream>
using namespace std;
int  main()
{
    int a(4);            //用小括号可以
    cout<<a;
    system("pause");
    return 0;
}
#14
蚕头燕尾2013-08-06 16:11
真的哎,小括号是对的

1