在这种情况下,b是一个标量对象吗?

问题描述 投票:1回答:1
#include <stdio.h>

int main(void) 
{
    char b[5];
    scanf("%4s%4s", b, b);
    printf("%s", b);
}

标量对象的准确定义是什么?b 在这种情况下是一个标量对象吗?

c object scalar
1个回答
0
投票

引用ISOIEC 9899:2018(C18),6.2.5(类型)21:

"算术类型和指针类型统称为标量类型。数组类型和结构类型统称为集合类型。)"

47) "请注意,集合类型不包括联合类型,因为一个具有联合类型的对象一次只能包含一个成员。"


"标量对象的准确定义是什么?"

标量对象是指只由单一实体组成的对象,如指针和算术类型的对象。

"b 在这种情况下,一个标量对象?"

b 是不是一个 标量 对象作为一个标量对象只能容纳一个单一实体。数组如 b 是"碎石". 数组到指针的衰减在 scanf("%4s%4s", b, b);printf("%s", b); 不变 b 仍然是数组类型。


1
投票

根据 C11标准,"算术类型和指针类型统称为标量类型。数组和结构类型统称为集合类型"

所以没有。b 不是一个标量,因为它是一个数组。 如果它是一个数字或指针(如 char* b),它将是一个标量类型。

© www.soinside.com 2019 - 2024. All rights reserved.