C++内置类型强制转换

重要提示:负数在内存中是补数形式存在!

C++ Primer写到有六种类型转换:

1、非布尔型值-》布尔:如果初始值为0则为false,否则为true;

2、浮点数-》整数:结果值仅保存浮点数中小数点之前的部分;

3、整数-》浮点数:小数部分为0,如果整数占用空间超过浮点数容量,精度有损失;

4、超出范围的值-》无符号类型:对无符号类型取模后的余数;

5、布尔值-》整数类型:false对应0,true对应1;

6、超出范围的值-》带符号类型:未定义。

7、短整型-》无符号长整型:未提到

鉴于第6、7种情况表述为未定义,所以用VS2015亲自试一下:

第6种:

short int x = 65536;

二进制10000000000000000

输出0

二进制 0000000000000000


short int x = 65535;

二进制1111111111111111

输出-1

二进制1111111111111111

short int x = 32768;

二进制1000000000000000

输出-32768

二进制1000000000000000

可见VS2015编译器对于超出长度的值采用的是简单的截断方式。

第7种:

short int x = -32768;
unsigned int y = x;

cout << y << endl;

二进制1000000000000000

输出4294934528

二进制11111111111111111000000000000000

short int x = 32767;

二进制0111111111111111

输出32767

二进制00000000000000000111111111111111

可见VS2015编译器采取的是填充符号位的方式。

在C语言中,可以使用强制类型转换运算符将C字符串转换为C++的string类型。这可以通过使用C++标准库中的string类来实现。具体的做法是使用string的构造函数,将C字符串作为参数传递给构造函数。以下是一个示例代码: ```cpp #include <iostream> #include <string> int main() { const char* c = "Hello, World!"; // 定义一个C字符串 // 使用强制类型转换将C字符串转换为string类型 std::string str(c); // 输出转换后的string std::cout << "转换后的string: " << str << std::endl; return 0; } ``` 在上面的代码中,首先定义了一个C字符串 `const char* c`,然后使用string的构造函数将C字符串转换为string类型 `std::string str(c)`,最后输出转换后的string。 所以,将C字符串强制转换为string类型可以通过使用string的构造函数实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [C++ 类型转换(内置类型,string、char*、const char*等)](https://blog.csdn.net/lady_killer9/article/details/108428021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [c++中的强制类型转换](https://blog.csdn.net/flying_ant2018/article/details/127284504)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值