我在FSI和VS2010都尝试了这个.它们给出了相同的输出.
for i= 8 to 10 do
for j=7 to 10 do
let product=i*j
printfn "%d * %o = %x" i j product
Run Code Online (Sandbox Code Playgroud)
输出是:
8*7=38
8*10=40
8*11=48
8*12=50
9*7=3f
9*10=48
9*11=51
9*12=5a
10*7=46
10*10=50
10*11=5a
10*12=64
val it : unit = ()
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
我尝试通过在线教程学习编程(使用F#因为我喜欢它).
Ric*_*lay 12
输出对我来说似乎是正确的,因为你正在格式化输出i,j并分别product在decimal(%d),octal(%o)和hex(%x)中.
数字7,8,9和10被格式化为7,10,11和12,因为这是它们的八进制表示.将它们全部更改为%d或%i解决问题.
猜猜是关于格式化字符串的printfn.试试吧%i.
for i = 8 to 10 do
for j = 7 to 10 do
let product=i*j
printfn "%i * %i = %i" i j product
Run Code Online (Sandbox Code Playgroud)
是.你错过了什么.10(十进制)*10(八进制)= 50(十六进制).%d表示十进制,%o表示八进制,%x表示十六进制.如果您不知道它们是什么,请谷歌.
以下是所有相同的陈述.
十进制:
10*8 = 80.
八进制:
12*10 = 120
十六进制:
a*8 = 50.
在复制之前请仔细查看.