如何模仿Python';在C中,s代表else语句

如何模仿Python';在C中,s代表else语句,c,C,下面是一个带有默认else条件的Python素数程序。我想在C语言中重现这一点,但我没有让它以与Python相同的方式工作: for ix, num_float in enumerate(numbers): num = int(num_float) result = 0 if num > 1: for i in range(2,num): if (num % i) == 0:

下面是一个带有默认else条件的Python素数程序。我想在C语言中重现这一点,但我没有让它以与Python相同的方式工作:

for ix, num_float in enumerate(numbers):
        num = int(num_float)
        result = 0

        if num > 1:
            for i in range(2,num):
                if (num % i) == 0:
                    result = 0
                    out_array.append(result)
                    break
                else:
                    result = num
                    out_array.append(result)
            else:
                result = 0
                out_array.append(result)
在Python中,如果(a)输入数(num)等于或小于2,或者(b)到达范围2的末尾,num没有找到质数,则会触发默认(final)else条件,从而触发break语句

我用C语言复制了这个;它编译并运行,与预期的输出非常匹配,但并不相同。它不写入默认条件

for (int i = 0; i < numbers_length; i++){

    num = (int64_t)numbers[i];
    int range_ctr;

    if (num > 1){
        for (range_ctr = 2; range_ctr < num; range_ctr++){
            if ((num%range_ctr) == 0){
                result = 0;
                list_of_results[list_of_results_ctr] = result;
                list_of_results_ctr++; 
                break; }
            else if ((num%range_ctr) != 0){
                result = num;
                list_of_results[list_of_results_ctr] = result;
                list_of_results_ctr++; }
        else {
            result = 0;
            list_of_results[list_of_results_ctr] = result;
            list_of_results_ctr++; }
        }
    }
}
for(int i=0;i1){
对于(范围系数=2;范围系数
所以我的问题是,如何像上面描述的那样,用C语言编写与Python相同的默认条件


谢谢。

在没有标准的C方式来模拟Python中默认的“else”条件的情况下,下面是我在C中的工作方式:

for (int i = 0; i < numbers_length; i++){

    num = (int64_t)numbers[i];
    int found = 0;
    int range_ctr;

    if (num > 1){
        for (range_ctr = 2; range_ctr < num; range_ctr++){
            if ((num%range_ctr) == 0){
                result = 0;
                list_of_results[list_of_results_ctr] = result;
                list_of_results_ctr++; 
                found = 1;
                break; }
            else if ((num%range_ctr) != 0){
                result = num;
                list_of_results[list_of_results_ctr] = result;
                list_of_results_ctr++; }
        }

        if (found == 0){
            result = 0;
            list_of_results[list_of_results_ctr] = result;
            list_of_results_ctr++; }                    
    }
}
for(int i=0;i1){
对于(范围系数=2;范围系数
我添加了一个名为“found”的标志,并将默认条件移到for循环之外


感谢所有回答的人。

输出有什么区别?如果它应该写一个零作为默认条件,它就不会写。我从来没有听说过C中的其他
。我不确定将这种心态强制到C代码中是否是一个好主意,因为我不确定其他C开发人员会如何反应。-当然,我没有回答您的问题,但这只是一个评论。您可能也应该避免在Python中使用loop else。据称,BDFL Guido van Rossum。在循环完成后,测试“我的循环提前中断了吗?”的典型选项是a)根据其最大可能值测试循环计数器,b)测试在代码中设置的标志,该标志在循环提前中断。