请问一个简单的 C# 数据类型问题? (20分)

  • 主题发起人 主题发起人 Archerfl
  • 开始时间 开始时间
A

Archerfl

Unregistered / Unconfirmed
GUEST, unregistred user!
我这样定义了两个变量:
uint weeks;
uint dayCounter = 14;
然后这样用,如下:
weeks = dayCounter / 7;
最后用Console.WriteLine显示weeks结果为2。而且编译器没有报错。
我认为这条赋值语句中7的字面值,编译器应该翻译成int型,而dayCounter为uint型,
因此编译器应该隐式转换其为uint -> long,这样整个dayCounter / 7运算结果应该为
long型,而将long型赋值给uint型应该发生错误才对,不知道这里为什么编译器却通过了。
请各位大虾指点!
 
说不定编译器把 = dayCounter / 7 直接就简化成 =2 了
 
也许如PiPi兄所言,不过到目前为止,我还没有看到有关C#编译器对这方面情况处理的资料
,不知道哪位仁兄能够继续从理论层面阐述一下这个问题,谢!
 
计算结果本身就是uint型呀,跟long有什么关系。
 
UINT无符号整型/int运算:UINT无符号整型->int
结果强行转换UINT,所以为2
 
奇怪啊,难道7不能算是uint?
各位有没有数据类型强制转换的详细资料?
 
编译器默认整数为int,而不是long, uint dayCounter = 14 编译时把int转换成了uint,
所以在weeks = dayCounter / 7中,是unit 与 int 的运算,编译时再作int 到 unit 的
转换,所以没有报错.


uint weeks;
uint dayCounter = 14;
然后这样用,如下:
weeks = dayCounter / 7;
 
同意楼上
 
后退
顶部