奇思妙想 · 2024年 4月 25日 0

丰富多彩的语句结束符或分隔符

41 次浏览
  • C/C++/ObjC/Java/C#/Pascal/PHP 等语言用分号分隔。
  • Basic/Python用换行分隔。
  • SQL语言既可以用换行也可以用分号,在不同语句在同一行时用分号,也支持更改语句分隔符。
  • Swift/JavaScript/Go/仓颉/Kotlin 结束符既可用换行,也可用分号。
    同一行写多个语句,用分号分隔。
  • VB采用换行或者冒号:作为结束符,下划线_作为续行符,VBScript和VB一样。
    • VB 2010之后,行续行符逐渐变得可选,即编译器更加智能,并不是直接以换行作为语句的结束,可以更懂程序员的代码。
    • 同一行有多个语句,用冒号作为语句分隔符。用下划线续行代表上下行属于同一个语句。
  • Rust语句结束符是分号,如果是块语句最后一个语句可以忽略分号。

误用分号

  • C语言分号作为语句的结束,如果误用在if、for和while条件语句之后,可能造成提前结束。
    例如
    if (x == 1);
    printf("is 1");
    这里if判断这行就已经结束了。幸运的是,GCC提供-Wmisleading-indentation选项检测这样的问题。

    if (a < 0)
    return
    printf("fail");
    这里return语句和后面的printf是连在一起作为一个语句。可惜的是,GCC/MSVC打开-Wall也不能提示可能的隐患。
  • C/C++ 结构体定义的最后需要有分号,习惯写C#/Java类定义可能忘记这个设定,造成奇怪的编译结果。比如,忘记了分号,结构体定义被当成了一个类型作为返回值。