c语言中带数组的sizeof
我的任务是打印十进制数的二进制值,我想控制数组的大小,因为我知道我应该这样做,所以我的程序可以在所有编译器中运行 我不能简单地理解运算符sizeof,但如果您能解释我应该在哪里以及为什么将sizeof放入我的程序中,我将不胜感激:c语言中带数组的sizeof,c,string,chars,C,String,Chars,我的任务是打印十进制数的二进制值,我想控制数组的大小,因为我知道我应该这样做,所以我的程序可以在所有编译器中运行 我不能简单地理解运算符sizeof,但如果您能解释我应该在哪里以及为什么将sizeof放入我的程序中,我将不胜感激: void translate_dec_bin(char s[]){ unsigned int decNum; char st[MAX_LEN] = { 0 }; int j = 0; sizeof(decNum, 4); dec
void translate_dec_bin(char s[]){
unsigned int decNum;
char st[MAX_LEN] = { 0 };
int j = 0;
sizeof(decNum, 4);
decNum = atoi(s);
while (decNum > 0){
st[j] = decNum % 2;
decNum = decNum / 2;
j++;
}
while (j >=0){
printf("%d", st[j]);
j--;
}
printf("\n");
}
我的想法是,当我打印号码时,即在代码中:
printf("%d", st[j]);
我应该叫接线员。是否正确?
sizeof
是一个一元运算,意味着它只需要一个操作数或参数。
Sizeof用于测量C(和C++)中数据类型的字节长度。所以,如果我要写
size_t a = sizeof(int);
a通常等于4(见Jonathan Leffler的评论)。这是因为32位整数需要4个字节的内存(32位/8位字节=4)
回答您关于可移植性的问题,sizeof(int)应该适用于任何编译器
您可能会发现这个问题很有用:
要将char数组的大小设置为int的位大小,应执行以下操作:
const size_t intsize = sizeof(int) * 8;//sizeof returns size in bytes, so * 8 will give size in bits
char st[intsize] = { 0 };
sizeof
是一个一元运算符:它只需要一个操作数,而不是两个操作数。谢谢@ouah。如果我写decNum=sizeof(无符号);这对我的目标有帮助吗?Sizeof使用表达式作为操作数<代码>表达式1、表达式2是一个表达式。(但可能不是预期的)@wildplasser:sizeof
将表达式(特别是一元表达式)或括号中的类型名作为其操作数。(我个人不会将后一种情况描述为应用于操作数的运算符,但标准就是这样描述的。)注意:在使用数组的大小时要非常小心。谢谢@那么它如何帮助我实现这个目标呢?我的程序将在int为128位的编译器中工作。如果我写decNum=sizeof(无符号);这对我的目标有帮助吗?谢谢。我理解其中的区别,但我无法理解如何在程序中实现sizeOf@Namfuak为什么您需要知道您的程序正在使用的特定整数类型的大小?我担心我的数组对于另一个编译器来说太长,所以我想将它设置为某个大小。哦,我明白您的意思,我会更新我的答案。请小心断言sizeof(int)==4
。虽然这是最常见的大小,但有些计算机的sizeof(int)==2
和sizeof(int)==8
,甚至sizeof(int)==1
(但是CHAR\u位==64
所以所有值都是64位值,sizeof(short)==1
)。