C++ cpp和C中的非法除零异常

C++ cpp和C中的非法除零异常,c++,c,C++,C,下面是一个简单的程序,它计算精确除以给定数字的各个数字的个数 #include<stdio.h> int main() { long long t, val, temp, count = 0, val1; scanf("%lld", &t); while (t--) { count = 0; scanf("%lld", &val); val1=val; while(val

下面是一个简单的程序,它计算精确除以给定数字的各个数字的个数

#include<stdio.h>

int main()
{
    long long t, val, temp, count = 0, val1;
    scanf("%lld", &t);
    while (t--)
    {
        count = 0;
        scanf("%lld", &val);
        val1=val;
        while(val1 != 0)
        {
            temp = val1 % 10;
            val1 = val1 / 10.0 ;
            if (val % temp == 0)
            {
                count++;
            }
        }
        printf("%lld", count);
    }
}
这意味着测试用例的数量为1,值为300。 但这里我用常数10除以它,为什么会抛出那个异常呢。那我现在该怎么处理呢? *我甚至尝试过cpp,也遇到了同样的问题

val%temp

如果
temp
0
(在您的程序中似乎是这样),则您正在调用未定义的行为。

提示:使用调试器确认是哪一行导致了错误。此-
val%temp
-也是一个除法。然后除以
temp
,很容易为零。@πάνταῥεῖ: 这和这个问题有什么关系?
val%temp