為什麼將下面這段程序代碼中的for循環加上大括弧會出現異常的結果?(不加的話結果正常輸出。)

#include &
using namespace std;
int main()
{
char str1[ ]="i am 1900";
char str2[30],*p1,*p2;
p1=str1;
p2=str2;
for(;*p1!="";p1++,p2++)
*p2=*p1;
*p2="";
p1=str1;
p2=str2;
cout&<&<"str1 is: "&<&


你把C++當Python了?


具體哪裡加大括弧?


縮進不能定義代碼塊。。。。


/* 我沒學過cpp, 用c寫的不過不影響你閱讀 */

1 #include &
2
3
4 int main(int argc, char * argv[])
5 {
6 char str1[ ]="i am 1900";
7 char str2[30],*p1,*p2;
8
9 p1=str1;
10 p2=str2;
11
12 for ( ;*p1!=""; p1++,p2++)
13 {
14 *p2=*p1;
15 } //你代碼運行是這樣的
16 *p2="";
17
18 p1=str1;
19 p2=str2;
20 printf ("str1 is: %s
", p1);
21 printf ("str2 is: %s
", p2);
22
23
24 return 0;
25 }

//運行結果

/* 按你那縮進加入{}後是這樣 */
1 #include &
2
3
4 int main(int argc, char * argv[])
5 {
6 char str1[ ]="i am 1900";
7 char str2[30],*p1,*p2;
8
9 p1=str1;
10 p2=str2;
11
12 for ( ;*p1!=""; p1++,p2++)
13 { //如果按照你的縮進加{}, 編譯沒報錯, gdb也能調試;
14 *p2=*p1;
15 *p2="";
16 }
17
18 p1=str1;
19 p2=str2;
20 printf ("str1 is: %s
", p1);
21 printf ("str2 is: %s
", p2);
22
23
24 return 0;
25 }

//運行結果

//我比較啰嗦, 希望有所幫助


你這明顯是之前寫Python,再轉到C++結果精分了吧,我以前也這麼搞過。

C++的for循環又不是靠縮進區分的


根據你的縮進來看是想把*p2=""; 也放到循環里?

  • 錯誤1:不加大括弧for while if都只會對後面的一句有效,所以說編譯器看的是大括弧不是看縮進
  • 錯誤2:如果想要把*p2放到大括弧里,那麼就是每複製一個字元都加一個,當然不對了

你現在的沒有花括弧的程序相當於這樣,所以運行正常——

#include &
using namespace std;
int main()
{
char str1[ ]="i am 1900";
char str2[30],*p1,*p2;
p1=str1;
p2=str2;
for(;*p1!="";p1++,p2++) {
*p2=*p1;
}
*p2="";
p1=str1;
p2=str2;
cout&<&<"str1 is: "&<&


題主,縮進當代碼塊?你跟Python應該有緣,先把C++放一放,把Python搞起。


for循環的循環體可以是單個語句(包括空語句),也可以是一個語句塊(其實你也可以把一整個語句塊當成一條語句)。

當你不加大括弧時,for循環的循環體就只是 *p2=*p1;

當你加了大括弧時,for循環的循環體變成了 { *p2=*p1; *p2=""; }

這和Python不一樣的


C++不是python, 不能用縮進取代花括弧 〒_〒

而且這代碼中縮進也是匪夷所思…… 縮進了 return 0; 是幾個意思?


用C++應該這樣

#include

using namespace std;

int main()

{

char str1[ ]="i am 1900";

char str2[30],*p1,*p2;

p1=str1;

p2=str2;

while(*p1!="")

{

strncpy(p2,p1,sizeof(p1));

}

coutcoutreturn 0;

}


題主挺萌的,乃們不要黑她


題主釣魚 哈哈哈


推薦閱讀:

如何看待王垠最新更新的博文《更新》?
計算機語言中是如何處理sin函數的?
C++中為什麼vector的讀寫速度比原生數組快?
有沒有簡單一點的Python小例子小項目?
如何用通俗易懂的語言解釋《Flask 框架作者希望看到的 Python》到底在說什麼?

TAG:編程 | 代碼 | 計算機語言 |