代码是合法的是什么意思?



我是一个编程和c++世界的绝对初学者。我开始读一本名为《c++入门》的书,我在其中一个练习中遇到了一个问题:"这段代码合法吗?"作为一个初学者,我个人不知道这是什么意思。请指导一个谦虚的新手在需要!

法律"通俗的意思是"结构良好";和"未定义";

让我们从一个类比开始。英语是有规则的。如果我用英文写信给你:"äöldksfg",你不会明白我的意思,因为那不是一个结构良好的单词。如果我写的而不是"如果如果如果如果如果if",你会理解每一个字,但它仍然不是一个完整的句子。如果我写"树马哼着亵渎的歌",你会觉得这个句子结构很好,但对你来说可能仍然没有什么意义。

c++语言——像英语一样——有规则。编程语言的规则比人类语言严格得多。c++语言的规则写在c++标准文档中。作为一个充满规则的文件,它类似于一本法律书。遵守法典使你的行为合法,以此类推,遵守c++语言的规则使你的程序"合法"。。

编写c++代码的规则在标准中描述(参见我在哪里找到当前的C或c++标准文档?)

如果一段代码符合标准的每一条规则,它就是合法的代码。

第一步是代码必须符合标准所描述的语言语法。例如:

int x = +/-;
int x =

是非法语句的例子,即非法语法。你的编译器会为你找到这样的错误。

但实际情况要复杂得多。事实是,您可以编写符合语言语法的代码,但仍然是非法的。

一个简单的例子:

int* x;
void foo(void)
{
int n = 42;
x = &n;
}
void bar(void)
{
foo();
printf("%dn", *x);  // Illegal - using pointer to "dead" object
}

当你深入研究c++时,你会发现有很多方法可以用合法的语法编写代码,但却有非法/未定义的行为。

相关内容

  • 没有找到相关文章

最新更新