以下代码error C2397: conversion from 'int' to 'ushort' requires a narrowing conversion
在使用 Visual Studio 2015 编译时会出现错误。
typedef unsigned short ushort ;
struct MyStruct{ ushort a ;} ;
MyStruct func(){
ushort a = 1, b = 1 ;
ushort c = a | b ; // <--- No error here
//return {c} ; // <--- Compiles fine
return {a | b} ; // <--- Error in this line
}
int main(){
ushort a = func().a ;
}
该表达式a | b
似乎int
在一种情况下返回 a ushort
,在另一种情况下返回 a 。
我无法理解这一点。
你能解释一下这里发生了什么吗?
PS:确切的编译器版本:Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86