这是我的第一个comp sci赋值的一部分,我们正在编写一个C程序来评估几个方程。这是给出了不稳定结果的代码:
// 1. Newton’s Second Law of Motion
printf("Newton's Second Law of Motion \nPlease enter mass and acceleration as decimal-point values separated by a comma (ex. 150.0,5.5): ");
scanf("%lf, %lf", &mass, &accel);
printf("Newton’s Second Law of Motion: force = mass * acceleration = %lf * %lf = %lf\n\n\n", mass, accel, mass*accel);
当程序运行时,第一个printf显示正常,但第二个显示“牛顿”而不是“牛顿”。
答案 0 :(得分:8)
您使用的是UNICODE吗?
似乎撇号有所不同:Newton’s
vs Newton's
。你是从某个地方复制粘贴的吗?
答案 1 :(得分:5)
具有值0x92的单字节字符’
将在不同系统上以不同方式显示,具体取决于当前有效的代码页。
Code page 437(美国常见)为此值显示Æ
个字符。
其他代码页,例如codepage 1252(西欧),显示’
。
答案 2 :(得分:2)
撇号有两种不同的字符。第一个'
是ASCII字符集的一部分,它位于所有现代字符集的基础上,并且在所有字符集中都是相同的。第二个’
是一个扩展字符,它不是基础的一部分,并根据您的字符集或代码页进行不同的解释。字符Æ
位于Windows-1252编码的位置0x00c6。
答案 3 :(得分:1)
这里最有可能发生的是您从源中复制文本而不是手动输入文本。该源可能具有UNICODE编码字符而不是7/8位ASCII字符。
我可能错了,但我相当确定printf只支持8位ASCII,因此截断了UNICODE widechar撇号的主要数据。
您想要的字符是0x27(十进制39)'
您键入的字符为十进制92',具体取决于代码页可能会显示为Æ
我希望能够清除它。