更好的设计哪个代码更干净?

时间:2018-03-25 09:04:48

标签: c loops do-while cs50

展览A

所以这段代码有printf函数,整数输入存储在后面。这是干净的代码吗?

#include <stdio.h>
#include <cs50.h>

int main(void)
{
    int input;
    do
    {
        printf("Enter a positive number: \n");
        input = get_int();
    }
    while (input <= 0);
}

图表B

我更喜欢这个,因为线路较少,但两者之间的最终结果是否相同?

#include <stdio.h>
#include <cs50.h>

int main(void)
{
    int input;
    do
    {
        input = get_int("Please enter a positive integer: \n");
    }
    while (input <= 0);
}

1 个答案:

答案 0 :(得分:1)

get_int()将格式字符串作为其第一个参数和必须与格式一致的可选参数。第一个代码具有未定义的行为,因为您没有将正确的参数传递给get_int()

建议向用户提供更多信息。从main()返回0也是更好的风格。

#include <stdio.h>
#include <cs50.h>

int main(void) {
    int input;
    while ((input = get_int("Please enter a positive integer: ")) <= 0) {
        printf("The number entered %d is not strictly positive\n", input);
    }
    return 0;
}