读书人

【弱弱地问问】在64位操作系统中用V

发布时间: 2013-11-25 13:22:27 作者: rapoo

【弱弱地问问】在64位操作系统中,用VS 2008编程,如果用float
类型的变量的话,很多时候编译时会发出警告;而使用double类型就没问题了。但是老用double的话是不是会造成空间浪费呢?比如很多时候我只需要精确到小数点后两位就行了,但是如果这时候用double的话岂不是杀鸡用牛刀?还是说,其实可以无视那个警告?

另外再提一个无关的问题:C++的string变量中是不是可以无条件地使用中文字符?就是说C++对待中文字符和对待英文字符是没有区别的? double float string
[解决办法]
和精确到小数点后2位无关。float精度很低,只能表示大概6~7位有效数字。如果你想表示123456.78,它就不够了。

另外一个问题,不是无条件,而是你要搞对中文的编码,不同编码是不能兼容的。
[解决办法]
不知道你是怎么用float的,我这里测试没有出现任何警告。
其实用double浪费内存的问题几乎不用考虑,太微小了。
就算你用了一百万个double也只比一百万个float多用了3.8MB内存。。


在多字节字符集下,中文字符和英文字符是不同对待的。
比如:
string str = "你";
int i = str.length();
char c1 = str[0];
char c2 = str[1];
你会发现str的长度i为2
分别取出这两个char字符来什么都不是。

因为在多字节字符集下,英文用一个字符表示,中文用两个字符表示。
在宽字节字符集下,英文和中文都用两个字符表示。
wstring str = L"你";
int i = str.length();
wchar_t c1 = str[0];
你会发现在宽字节字符集下,str的长度i为1
取出这个宽字符,正是‘你’

有关多字节字符集和宽字节字符集,需要多了解下,百度下这方面知识,不如以后会遇到很多问题。

读书人网 >C++

热点推荐