次のコードは、2015年2つのUShorts間の操作はVC2015にintを与えますか? Visual Studioにコンパイルした場合
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
は1ケースでint
、別でushort
を返すように見えるエラーerror C2397: conversion from 'int' to 'ushort' requires a narrowing conversion
を与えます。
私はこれを理解できません。
ここで何が起こっているのか説明できますか?
PS:正確なコンパイラのバージョンは:Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
なぜこの質問に関連するC#はありますか? – GetFree