小编mat*_*com的帖子

这段代码有什么区别?

#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)

不同?

它与优先顺序有关吗?

c

2
推荐指数
1
解决办法
74
查看次数

数组名称不能是l值意味着这个?

例如,

我声明这样的变量,

char szBuffer[12] = {"Hello"};
char szData[12] = {"Cheese"};

szBuffer = szData;
Run Code Online (Sandbox Code Playgroud)

是错误,因为szBuffer不能是l值.

szBuffer有它自己的地址,例如,0x0012345678szBuffer的值也是它的地址,0x0012345678.

所以我认为"数组名称不能是l值"意味着数组的地址及其值必须相等.

我对吗?

如果我是对的,为什么他们必须平等?

c

2
推荐指数
1
解决办法
119
查看次数

标签 统计

c ×2