花括号语言是众所周知的:()
其他编程语言可以有BEGIN ~ END和LIVE ~END块结构。例如
A) BEGIN ~ END,DO ~ END,IF ~ END IF -示例:,,,,等...
B) IF ~ FI、DO ~ OD、CASE ~ IN ~ OUT ~ ESAC -示例:、、、、、、、、、C15、C16、C17等...
什么是官方的(或-合理的)名称来区分两种不同的块结构风格A)和B)?
我试图解决这个问题,即计算行、空格和制表符的数量。
我的解决方案不正确,因为我不知道如何使用{ }。
main ()
{
int newline;
int tab;
int blank;
int c;
newline = 0;
tab = 0;
blank = 0;
while ((c = getchar()) != EOF)
if (c == '\n')
++newline;
if (c == '\t')
当编译器看到THEN...END IF(在Vb中)和{ ... }(在C#中)时,它是否看到了相同的东西,它们似乎是分隔If语句的东西。
如果它们被同等对待,为什么我可以在C#中这样做:
if(true)
int x = 1;
//Instead of
if(true)
{
int x = 1;
}
但不是在VB中:
//Won't Compile
if(true)
x As Integer = 1
//Instead Of
if(true) then
x As Integer = 1
End If
目前,我在PHP中声明如下函数:
function theFunction($theVar) {
...
}
在JavaScript中是这样的:
function theFunction(theVar) {
...
}
当函数只包含一行时,我可以省略大括号吗?像这样:
function theFunction($theVar)
doSomething();
和:
function theFunction(theVar)
doSomething();
我有一个最简单的声明变量“a”的c++语句:
int a = ({ int b = 10; b; });
正如最近gcc和clang所说,这是一个有效的语句,它真正声明变量a的值为10。
问题是:这是什么?我知道各种表达方式。我知道各种各样的陈述。但是我在c++ 14标准中找不到任何提到“块语句作为表达式返回最新的内部计算表达式”之类的内容。
有人能告诉我确切的标准行吗,也就是说代码行完全有效?
我有一个expect脚本,其中我并不总是知道输出,我也不想对给定命令返回的预期输出进行硬编码,而是将预期输出的一部分作为命令行变量进行传递。然后,我想使用预期的输出作为正则表达式的一部分进行验证。 我看了几个示例,只能看到cli变量与send命令一起使用,而不是与expect -re命令一起使用。 #!/usr/bin/expect
set output [lindex $argv 0]
set host [lindex $argv 1]
set regex "{(?n)^${output}.*}"
puts $regex
set timeout -1
spawn s
有什么语法技巧/特性可以让我在TCL中粘贴两个字面单词,例如将一个带括号的({..})单词和一个双引号的"..."单词连接到一个单独的单词中?
我不是在问set a {foo}; set b "bar\nquux"; set c $a$b或append a $b --我知道它们;而是关于没有中间变量或命令的东西。类似于{*}word (将一个单词转化为列表)。
我想答案是“不可能”,但我对Tcl的浅薄认识不允许我得出这样的结论。
我创建了这个小软件,可以计算矩形和正方形的表面和周长。然而,运行这个程序对我来说变得非常困难。我的意思是,当我尝试运行它时,软件对“正方形”部分工作得很好,但当我转到“矩形”部分时,它立即关闭。有谁可以帮我?非常感谢!
#include<iostream>
using namespace std;
int main ()
{
double a, b, c, answer, x, y, z;
cout << "Square (1) or rectangle (2) ";
cin >> x ;
if (x==1)
{
cout <&
如果else与哪一个相关,该如何控制?
例如:
if X = 1 { // A
if Y > 1 { // B
gothere();
}
}
else if X < 1 { // C
gohere();
}
else { // D
gonowhere();
}
如何确保C和D不会与B相关?
下面是另一个例子:
if xxx {
...
FM_log(7,"vList.length = "+vList.length);
if (skippingAvancado)
if (vList.length > 1
我正在尝试将一些代码从C语言翻译成另一种语言。我无法快速访问C编译器,只是发现自己被单行的if语句搞糊涂了。我知道像这样的陈述:
if (condition) [statement]
和
if (condition)
[statement]
可以在没有括号的情况下进行计算,即等同于:
if (condition) {[statement]}
和
if (condition)
{[statement]}
,但我不确定我正在处理的示例代码。它是这样的:
if (ge.g[*l][*k].s==1) *i=1; else *i=Ne;
*j=*l;
我觉得第二行不会受到if语句
为什么这个等式在C(32位)和Java (64位)中为e产生了两个不同的值?他们出乎意料地偏离了很大的数量。
int a, b, c, d;
double e;
a = -12806;
b = 1;
c = 800;
d = 19209;
double f = (32768 / 10.24);
e = (a + (double) b / c * d) / f;
C产生-3.9940624237060547。Java produces 3.9943714843750002。
更新:
对不起,各位,这个错误似乎不是我预想的。我将我的代码简化为这个方程式,它产生的数字更接近。
我遵循C家族(PHP是一个想要的!)要求跨越多行的语句必须用曲线括起来。
Scala避免了O‘’Reilly的Scala编程中这段代码中的解析错误。
def apply(specification: String): Option[Widget] = specification match {
case ButtonExtractorRE(label) => new Some(new Button(label))
case TextFieldExtractorRE(text) => new Some(new TextField(text))
case _
这里是我的expect脚本:
#!/usr/local/bin/expect -f
set force_conservative 0 ;# set to 1 to force conservative mode even if
;# script wasn't run conservatively originally
if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sle
我正在尝试匹配一个字符串,该字符串的前面没有字符,但可能什么都没有。
示例:我希望匹配括号中所有"test“的情况,除非它们前面有"[”或“x”。
示例字符串:
(1) {this is a test} // match
(2) {this [is] also a test } // match
(3) {test} // match
(4) {this is the third |test} // no match
(5) {this is the third [test} //
我刚开始使用Visual Studio 2013。我喜欢自动大括号补全功能。但在C#中,当我在输入{后按enter键时,不会形成额外的行来编写代码,就像在eclipse中一样。相反,光标将位于}的左侧。有人注意到了吗?有没有办法解决这个问题。
当我在放置括号后按Enter键时,编辑器是这样的:
class Example {
|}
(光标位于管道字符所在的位置。)
编辑:我刚刚发现在Visual C++ 2013中,大括号的工作方式与预期一致。
class Example {
|
}
(光标位于管道字符所在的位置。)
有时,当我有一个多大小写的if,或者一个非常简单的for,只有两个语句时,我会放弃大括号,而使用逗号。这是对该功能的不良利用吗?它是丑陋和糟糕的形式吗?或者这是一种可以接受的节省时间和空间的方式?
例如:
if (something)
b = y, c = z--;
而不是:
if (something) {
b = y;
c = z--;
}