2016-07-28 3 views
0

Stephen PrataがC Primer Plusで理解できない "文"についての文があります。Stephen PrataがC Primer Plusで理解できない "statement"についての文があります

第5章では、ステートメントと式の違いについて説明します。次のように著者は、ステートメントを説明:

ステートメントは、プログラムの主要なビルディングブロックです。プログラムとは、必要な句読点が付いた一連のステートメントです。ステートメントは で、コンピュータへの完全な指示です。 Cでは、ステートメントは最後にセミコロンで と表示されます。したがって、

legs = 4は(より大きな式の一部であってもよい)だけ表現であるが、legs = 4;

文です。

そして著者は、例を示します:

の文(あるいは、少なくとも、賢明な文は)完全な命令ですが、すべてではない完全な手順は、文です。

x = 6 + (y = 5);

はそれでは、部分式y = 5が完了した命令であるが、それは文の一部でしかありません: 次の文を考えてみましょう。完全な命令は必ず ではないため、真にステートメントである 命令を識別するためにセミコロンが必要です。

著者は、「y = 5」は完全な命令ですが、前述のように完全なステートメントではないことを示していますか?

+1

"完全な命令"ではなく、 "完全な命令"です。 「完全な指導」と「表現」は、どの時点で相互に排他的であるという印象を受けましたか? – Cubic

+0

http://stackoverflow.com/questions/3846727/why-is-the-difference-between-an-expression-and-a-statement –

+0

「y = 5」は割り当てです。Cの代入も式であり、右辺の式に評価されます。したがって、「y = 5」は完全な命令(5を「y」に割り当てる)と式(値を「5」とする)の両方である。 –

答えて

0

すべてのCプログラムはステートメントで構成されています。プログラムは文ごと文を実行します。それぞれのステートメントは、一般的には、ある表現から成っています。また、式はさらにサブ式を含むことができる。たとえば、次のようになります。

/* diff_statements.c */ 
#include <stdio.h> 
#define SIZE 10  /* SIZE symbolic constant */ 

int main(void) 
{ 
    int index, sum; /* declaration statement */ 
    int boys[SIZE]; /* array declaration */ 

    printf("user enter no of boys in 10 classes...\n"); 
    /* function statement */ 

    for (index = 0; index < SIZE; index++) 
     scanf("%d", &boys[index]); 

    /* for statement with single statement */ 

    /* IT'S A GOOD PRACTICE TO REVIEW IF U ENTERED CORRECT VALUES */ 

    printf("No. of boys you entered for 10 classes are as:\n"); 
    for (index = 0; index < SIZE; index++) 
     printf("%d\t", boys[index]); 
    printf("\n"); 

    printf("Summing up & Displaying boys in all classes...\n"); 

    /* for statement with block of statements */  
    for (index = 0; index < SIZE; index++) { 
     sum += boys[index]; 
     ; /* Null Statement; this does nothing here */ 
    } 

    printf("Total boys in %d classes is %d\n", SIZE, sum); 
    return 0; 
} 

すべてのCステートメントは、セミコロン ';'で終了します。表現はしませんが。たとえば:

x + y; /* x + y is an exp but x + y; is a statement. */ 
5 + 7; /* similarly as above */ 

while (5 < 10) { 
    /* 5 < 10 is a relational exp, not a statement. */ 
    /* used as a while test condition */ 

    /* other statements in while loop */ 
} 

result = (float) (x * y)/(u + v); 
okey = (x * y)/(u + w) * (z = a + b + c + d); 

/* (z = a + b + c + d) is a sub-expression in the above */ 
/* expression. */ 

表現は、人間の論理で完全な命令ですが、Cの観点からC.によると、完全な命令は声明ではありません、それは半で終了式の有効な組み合わせであります結腸。

関連する問題