我最近在研究D编程语言中的文字细节.
由于八进制文字使用0的前缀,数字,int x = 078;是无效的自然.但那么为什么int x = 08;在DMD中有效呢?
但是,我已经用GCC(C编译器)对它进行了测试,发现它们都是无效的.
import std.stdio;
int main(string[] args)
{
// int x = 078; // error here: radix 8 digit expected, not '8'
int x = 08; // but no error here
writeln("x = ", x);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是DMD中的错误吗?提前致谢.
NB我正在使用DMD32 D Compiler v2.071.2-b2(Win32版本).
小智 3
D 中不推荐使用八进制文字,如果使用的话应该会出错。dmd接受的事实08表明存在错误。如果您确实想使用八进制,请使用模板std.conv.octal
void main()
{
import std.conv : octal;
//int a = octal!8; //Error
int b = octal!7; //Fine
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
205 次 |
| 最近记录: |