符号:在C和C ++中是什么意思? 为什么与开关盒一起使用? 我已经在网上搜索过,唯一得到的答案是,它是一个标签,并与goto语句一起使用。
答案 0 :(得分:7)
在C和C ++语法中通常使用冒号来表示标签:执行可以跳转到的位置不是由显式块确定的。
这就是我的意思。在if
语句中,执行将跳过第一个块或else
块。在这两种情况下,整个块都将跳转。在while
循环中,执行跳转到块的开始之前,或者带有break
语句/条件失败,跳转到块的外部。
基本上,在C和C ++中,大多数跳转都是基于块和关键字。
goto
可以跳转到函数内的任意标签(C ++可以说如何“任意地”跳转),而与块定义无关。尽管switch
语句只能跳到其自己块中的不同case/default
位置,并且只能跳到一个这样的位置,但这些位置不会创建范围的 block (因为就像我们有时希望他们这么做的那样)。这些位置未定义专有代码的各个部分;执行直接通过标签(这就是break
语句通常与case/default
一起使用的原因)。
简而言之,与普通的C或C ++块结构相比,case/default
的行为更像标记为goto
。因此,它们使用相同的语法来表示它们:冒号。
答案 1 :(得分:3)
如您所读,它用于为goto语句跳转到的目标/标签。例如:
printf("x1\n");
goto target;
printf("x2\n");
target:
printf("x3\n);
将打印出
x1
x3
它也用于在switch / case块中指定跳转目标:
switch(someVal)
{
case 1:
printf("1\n");
break;
case 2:
printf("2\n");
break;
default:
printf("Something else\n");
break;
}
关于为什么的使用(与某些其他字符或语法相反),最可能的解释是该语法是从B language继承的,而this PDF是C源自。您可以在{{3}}中的B程序中看到goto和switch / case用法的示例,它们看起来很像C语法。
答案 2 :(得分:3)
:开关case构造中的:通常标记case标签的结尾。就是说,当案例定义为案例1时:这意味着:表示案例内任何案例或方法都可以执行的案例构造标签的结尾。
例如:
switch(ch)
{
case 1:// Completion of case 1 label
printf("Hello");
break;
case 2:// Completion of case 2 label
printf("World");
break;
}
答案 3 :(得分:1)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/main_content">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="610.3dp">
<TextView
android:text="Location Detail"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView9"
android:layout_marginTop="0dp"
android:gravity="center" />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="199.3dp"
android:id="@+id/linearLayout1"
android:layout_marginTop="0dp"
android:layout_marginRight="20dp"
android:layout_marginLeft="20dp">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="40dp"
android:id="@+id/linearLayout2">
<TextView
android:text="Name"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:width="100dp"
android:gravity="left|center|top" />
<TextView
android:text=":"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:gravity="top" />
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/editTextLocationDetailName" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="40dp"
android:id="@+id/linearLayout3"
android:layout_marginTop="5dp">
<TextView
android:text="Address"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/textView4"
android:width="100dp"
android:gravity="center|left|top" />
<TextView
android:text=":"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/textView5"
android:gravity="center|top" />
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/editTextLocationDetailAddress" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="60dp"
android:id="@+id/linearLayout4"
android:layout_marginTop="5dp"
android:gravity="top">
<TextView
android:text="Description"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/textView6"
android:width="100dp"
android:gravity="left|center|top" />
<TextView
android:text=":"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/textView7"
android:gravity="center|top" />
<EditText
android:inputType="textMultiLine"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/editTextLocationDetailDescription" />
</LinearLayout>
</LinearLayout>
<TextView
android:text="Registered User"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView8"
android:layout_marginTop="10dp"
android:gravity="center" />
<android.support.v7.widget.RecyclerView
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:id="@+id/recyclerViewLocationUser"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="20dp" />
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/progressBarLocationDetail"
android:layout_marginTop="20dp" />
<LinearLayout
android:orientation="horizontal"
android:minWidth="25px"
android:minHeight="50dp"
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="#ff03a9f4"
android:layout_gravity="right"
android:gravity="center" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
是语法中称为 labeled-statement 的项的一部分。存在三种不同的情况,C17 6.8.1:
:
第一种情况labeled-statement:
identifier : statement
case constant-expression : statement
default : statement
涉及goto标签,另外两种情况涉及identifier : statement
语句。