Answers:
sizeof(a)/sizeof(t)
将类型明确地编码到表达式中。现在,您已经在多个位置指定了类型,并且没有编译器支持来确保您使用的是同一类型。因此,如果您更改数组的基本类型,但不更改(完全独立的)count表达式,则使用bingo:您的代码可以很好地编译,但是元素计数将是错误的。如果幸运的话,您的程序将崩溃,但如果无法运行,它将几乎完全正确地运行,但是偶尔也会表现得异常奇怪。
sizeof(a)/sizeof(a[0])
保证是正确的,只需要数组的名称。更改类型,您就可以了;更改数组名称,编译器将抱怨。无需思考:我们喜欢这种编程。
sizeof a/sizeof*a
,即使这并不是真正的差异。