这是一个五位数字作为输入.我希望这是计算其数字总和的程序,当我在dev编译器中运行程序时它停止响应并且它为每五位数字给出255作为输出.
#include<stdio.h>
void main()
{
int n, a, b, c, d, e, f;
printf("entre a no ");
scanf("%d",n);
a = n % 10;
n = n / 10;
b = n % 10;
n = n / 10;
c = n % 10;
n = n / 10;
d = n % 10;
n = n / 10;
e = n;
f = (a + b + c + d + e);
printf("sum of five digit=%d",f);
}
Run Code Online (Sandbox Code Playgroud)
预期输出是五位数的总和.
但它总是停止响应,它显示一个对话框,要求我关闭该程序.关闭程序后,无论输入的数量是多少,它总是输出255.
我想避免memset()
在这样的结构上使用:
typedef struct {
int size;
float param1;
} StructA;
typedef struct {
StructA a;
unsigned int state;
float param2;
} Object;
Run Code Online (Sandbox Code Playgroud)
我可以做这样的事情(伪代码,我现在无法检查)?
Object obj;
int *adr = (int*)&obj;
for (int i; i < sizeof(obj); i++) {
*adr++ = 0;
}
Run Code Online (Sandbox Code Playgroud)
它会将obj的每个成员设置为零吗?
编辑:回答评论问题.我一直在研究一些情况(使用uni-type结构),其memset
速度比手动初始化慢两倍.所以我会考虑尝试初始化多类型结构.
避免memcpy()
也会很好(避免使用<string.h>
lib).