最近我一直在尝试开发一种自定义编程语言。但是,在我(试图)创建的前面语言以分号结尾的地方,我现在制作的语言是用换行符结束的,就像Python一样。
我偶然发现的问题是,虽然在例如C++中的每一个分号都被视为某种类型的终止符,但Python中的换行符并不总是充当终止符。
例如:
// incorrect in c++
myfunc();;;;otherfunc();
和
# completely fine in python
myfunc()
otherfunc()
所以我的问题是,我如何解析这个?这种语言的巴库斯-诺尔形式是什么样子的?
我知道语句后面需要分号(我说的是Java、C++和类似的语言),但花括号后面不需要分号。为什么会这样呢?
if (a > b)
printf("hello!"); // semicolon is mandatory
if (a > b) {
printf("hello!");
} // semicolon is not required
原因何在?我的意思是,这背后的理论是什么?
用C语言可以做这样的事情吗?
for (int i=0, char c;;)
或者类型需要匹配?for循环的赋值(第一部分)的各种可能性是什么?例如:
for (int i,j,k=0;;)
for (int i=0, j, k=2;;)
for (int i=0, j=1, k;;)
for (int i, j=1, k;;)
...etc...
我一直在为我的C++作业做一些研究,我遇到了这个任务的解决方案,它实际上只有一行代码。(当然是+初始化变量)。
for (; n != 0; n /= 10, ++count) {}
我的问题是,for循环开头的分号是做什么的。我们的教授从来没有讲过这个问题。有没有一种不同的方式来写这段代码,也许没有分号,但仍然使用for循环?
注:倾斜C++背景与python背景
查看下面代码的最后一个if语句: i=1在if语句之后意味着什么。看看最后的那句话。在after语句之后,i=0是什么意思?他们为什么在那里
#include <stdio.h> // preprocessor command
int foo(int x) // function definition
{
return x+1; // return expression value
}
int main() // this is where all C programs start
{
int i = 0; // variable
我不知道为什么这不管用。
public static int getMaxPosition(ArrayList<Integer>list)
{
int max=list.get(0);
int maxPos=0;
int curr;
int c;
for (c=0; c<list.size(); c++);
{
curr=list.get(c);
if (curr>max);
{
maxPos=curr;
max=curr;
我记得有一次我看到有人写了这样的C++代码:
if (something is true)
for (int i = 0; i < max; i++) {
//do something
line 1;
line 2;
line 3;
....
....
}
else
....
它的工作原理与以下代码相同:
if (something is true) { //note the bracket here
for (int i = 0; i < max; i
我已经发现,这段代码在下面指出的地方编译了分号和没有分号。
在这里使用分号的正确方法是什么?
try
try
if MyBoolean = True then
begin
DoSomething;
end
else
begin
DoSomethingElse;
end <<<--- Semi colon here?
except
;
end <<<--- Semi colon here?
finally
我是一个新手C++程序员,通过一个简单的问题,打印出名字和分数对在一起。在这里,我使用了一个std::unordered_set作为名称和一个向量的分数(接受重复分数,但不是名称),这是很好的工作。
但是有一件事让我对结果感到困惑,那就是如果我试图在for循环中初始化迭代器,编译器会给我一个错误,上面写着
迭代器“不能在当前范围内定义。
这就产生了错误:
for (int i = 0, std::unordered_set<std::string>::iterator it = names.begin();
有人能帮我吗?我刚刚开始在C/C++上编程(我使用DevC++)
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char* argv[]) {
int X;
int Y;
int R;
cout << "FUNCION POTENCIA";
cout << "Ingrese primero la base y luego el exponente";
c
我想在javascript中写一个算法,我相信我写的是真的。该算法给出了用户的一个数字,并给出了结果: 1+3+5+...+(2n+1)和"n“为var。javascript给出了错误: calc()没有定义,没有预料到的令牌;
<html>
<head>
<title>Algorithm</title>
<script type="text/javascript">
function calc(){
var n = document.getElement
这段代码的目的是从1循环到4,然后停止。我的问题是,为什么在else语句(;)中添加或保留分号都无关紧要...代码编译得很好。最好的方法是什么?添加分号还是保留分号?
fn main() {
let mut var = 1;
loop{
println!("It is now {}", var);
if var >= 4 {
println!("Finished the loop");
break;
} else {
您可能知道,如果没有显式地编写分号,ECMAscript就会很聪明,并且会自动插入分号。简单例子
function foo() {
var bar = 5
return bar
}
仍能如愿以偿。但是,如果你相信这一点的话,还有一些警告。如果我们像这样重写这个函数
function foo() {
var bar = 5
return
{
bar: bar
}
}
..that函数现在将返回undefined,因为解释器将在return语句之后插入分号(这就是为什么您总是应该将花括号放在与语句相同的行中)。
然而,知道了这一切