什么是硬编码?

What exactly is hard coding?

我相信这是一个分配的值,并且 这是无法改变的。 一个例子是:

int limit =5;
    for(int i =0 ; i<limit; i++){
        printf("w");

另外,我不应该使用硬编码的原因是什么? 对不起,我是编程新手。

"Hard Coding" 表示您想嵌入到您的程序或任何项目中的东西 - 不能直接更改(例如,直接使用值而不是使用变量或常量)。例如,如果您不是硬编码,那么您会做一些事情,例如提示用户输入数据或允许用户将数据放在命令行上。

因此,在您提供的示例中,您可以说打印 "w" 是 "hard-coded"。 此外,正如@Ingo Leonhardt 指出的那样,limit 也是 "hard-coded" 是 5.

这是另一个例子:

假设我们想要将我们正在处理的文件的位置硬编码为在 C: 驱动器上,您只需将文件的路径名放在源代码中即可:

int main()
{
    const char *filename = "C:\myfile.txt";

    printf("Filename is: %s\n", filename);
}

文件名为"hard-coded"为:C:\myfile.txt

术语硬编码指的是有人将数据直接写入代码,而没有使用正确的方法来完成工作。

硬编码的一个例子是,如果我需要 return 来自数据库的一些数据,但我写了:

return "(1,2,'up')"

有人硬编码某些东西的原因有很多,可能只是为了测试某些东西,因为写起来比实际功能更快,因为今天是星期五 14:00 而你想回家,等等。

硬编码 是直接使用值而不是创建变量或常量。因此,在您的示例中,"w" 是硬编码的,但 5 不是。因此,阅读您的代码的人会知道为什么您的循环迭代 5 次(即 limit),但不知道它为什么打印 "w".

I believe that it's a value that is assigned and that cannot be changed.

不,这叫做 常量。硬编码更意味着

Hard coding (also hard-coding or hardcoding) is the software development practice of embedding data directly into the source code of a program or other executable object

~ Wikipedia

所以源代码中定义了一个“硬编码值”,因此只能由程序员更改。在很多情况下,您实际上并不希望那样。您宁愿希望该值可以由用户或管理员更改。 唯一应该“硬编码”的值是永远不应该改变的东西(例如物理常数)。