You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中含双等号的连续赋值语句如何执行?

连续赋值语句的执行逻辑解析

你遇到的这段C++代码:

PWSTR myWchar = NULL;
WCHAR *p = myWchar = new WCHAR[4];

这条包含两个等号的语句,执行逻辑完全对应你列出的A方式,原因如下:

在C++中,赋值运算符=是右结合的,连续赋值会从右往左依次执行:

  1. 首先执行myWchar = new WCHAR[4];:通过new分配一块能容纳4个WCHAR的内存,将这块内存的首地址赋值给myWchar
  2. 接着执行WCHAR *p = myWchar;:把myWchar中存储的内存地址赋值给指针p

执行完成后,p和myWchar会指向同一块new分配的内存区域。

而你列出的B方式不符合C++的语法规则,因为赋值运算符的右结合性决定了不会先执行左侧的赋值操作。

内容的提问来源于stack exchange,提问作者user3443063

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 01:49:52