#include <stdio.h>
int main(void)
{
double aRate[10] = { 0.0, 0.1, 0.25, 0.5, 0.5, 0.6, 0.65, 0.8, 0.82, 0.97};
int nAge = 0, i = 0, nFee = 1000;
int a = 0;
printf("%d : \t%d \n", i, (int)(nFee*aRate[2]));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,此代码的结果为0:250,但如果我省略这样的括号,
printf("%d : \t%d \n", i, (int)nFee*aRate[2]);
Run Code Online (Sandbox Code Playgroud)
那么结果是0:0.
为什么是
printf("%d : \t%d \n", i, (int)(nFee*aRate[2]));
Run Code Online (Sandbox Code Playgroud)
和
printf("%d : \t%d \n", i, (int)nFee*aRate[2]);
Run Code Online (Sandbox Code Playgroud)
不同?
它与优先顺序有关吗?
例如,
我声明这样的变量,
char szBuffer[12] = {"Hello"};
char szData[12] = {"Cheese"};
szBuffer = szData;
Run Code Online (Sandbox Code Playgroud)
是错误,因为szBuffer不能是l值.
szBuffer有它自己的地址,例如,0x0012345678和szBuffer的值也是它的地址,0x0012345678.
所以我认为"数组名称不能是l值"意味着数组的地址及其值必须相等.
我对吗?
如果我是对的,为什么他们必须平等?
c ×2