iT邦幫忙

1

"\t"跟" "差在哪?

  • 分享至 

  • xImage

這段程式的9 9乘法表中,區隔算式的符號是" ",但表格的形狀會跑掉(應該是因為有些等號後面是個位;有些是十位)

//complete 9*9 mutiply table with do-while loop
#include <iostream>
using namespace std;
int main()
{
    int i;
    int j;
    for (i=1;i<=9;i++)
        for(j=1;j<=9;j++)
        {
            cout<<i<<"*"<<j<<"="<<i*j<<"   ";
            if (j==9)
            {
                cout<<"\n";
            }
        }
            
    return 0;
}

![https://ithelp.ithome.com.tw/upload/images/20230319/20158727s3aTd8P0Vj.png]

而當我把" "改成"\n"時就會恢復正常
![https://ithelp.ithome.com.tw/upload/images/20230319/20158727qxayVFDhIh.png]
請問是為什麼呢?

菩薩慈悲:題目是\t 為什麼內容是 \n 呢?t, 就是table 的縮寫的緣故吧 , 本來就是用來定位字元的定位符吧。 " " 只是一個半形空格啊 ,如何定位。感恩感恩南無阿彌陀佛
harutsuki iT邦新手 5 級 ‧ 2023-03-20 20:17:48 檢舉
把ascii表拿出來看看
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

6
海綿寶寶
iT邦大神 1 級 ‧ 2023-03-19 12:31:36

https://ithelp.ithome.com.tw/upload/images/20230319/20001787kb9IL0PReK.png

程式裡有兩個特殊字元
\t 是 tab,是在每一個 x*y=z後面(eg.每列有9次)
\n 是換列,是在每一列最後面(eg.每列只有1次)

至於三個空白和 tab 有什麼差別
最好的方法就是打開 word
然後輸入

//b 代表空白鍵
1*1=1bbb1*2=2bbb1*3=3bbb....
//t 代表 tab 鍵
2*1=2t2*2=4t2*3=6t...

立馬就感覺到差別了

另外
先前的問題如果已經解決了
記得選最有幫助解答以結案

海綿寶寶菩薩慈悲:
大神慈悲,小善不遺,還肯惠示童蒙,令人感佩!

t=table⇒tab
n=newline
\r : r = return

是這樣吧 感恩感恩 南無阿彌陀佛
在C#環境中則是 \r\n ( = Environment.NewLine )才是完整的換行

  • 打開 Word 輸入前最好先點按「常用」功能表區塊內最右上方的「顯示/隱藏編輯標記」按鈕(快速鍵是 Ctrl + * )會更有感吧。感恩感恩 讚歎讚歎 南無阿彌陀佛
6

首先,你要先了解一件事。
程式文字字串中,有幾種特殊符號。

分別是「定位符、跳格符、TABS(t)」「返回符、歸位符、回車符(r)」「換行符(n)」
先了解這三種。

定位符T:這如果有常使用WORD的話。因該會對它不陌生。
其一般就是固定跳格到第幾個位元位置上。大多數會用在排版上。

回車符R:認真來說,這算是WINDOWS系統中才會有的解釋。在UNIX系統上,則會將其視為一個無效字元。簡單來說。它就是將指標移回開頭的位置。
其實為何在WINDOWS上會需要這樣的動作,依據我很早期找到的資料說明。有人說是當時的工程師只能將換行記號放到開頭上。所以才需要先做一次回車才能下換行符。
如果直接在後面放換行符。則會沒有作用。實際情況我到未深入了解就是了。

換行符N:就字面的意思。就是換行了。

回來您的問題。其實「海綿寶寶」給你的就是利用了「定位符」來達到讓您呈現的資料排好。
其實上面三種符號。並不單純的只是C語言。幾乎所有的程式語言都有這樣的符號。

孫守真任真甫
t(定位符)認真來說,並不等於是table。
\r\n也不是C語言專有的。而是如果要運行在WINDOWS系統上。
如要換行則都要用 \r\n 。這不管任何程式語言都一樣。
阿門

感恩 ㊣浩瀚星空㊣ 菩薩慈悲解釋,原來末學對「\t」誤解了,但是用 table 方便記憶 tab 和 \t 是什麼意義罷了。自己是疏忽了,經過大神您這樣地提起,才想起來曾經讀過 Environment.NewLine 在不同作業系統下會有不同的值,是自己只會 C# VBA VB.NET,只在用這兩種語言的一點皮毛就淡忘了。……
程式設計上基礎觀念、概念的建立真的很重要!這是末學一路上自學摸索下的心得。感恩感恩 讚歎讚歎㊣浩瀚星空㊣ 菩薩慈悲 南無阿彌陀佛
對了 順便請教大神菩薩您,為什麼大名前後還要加上㊣呢 ^^ 感恩感恩  南無阿彌陀佛

jeffeux iT邦新手 4 級 ‧ 2023-03-20 04:09:25 檢舉

其實感覺用 table 理解沒有什麼問題嗎?
只是比較是「可以製造一個 table 的字元」這樣
而「可以製造一個 table」可以寫成動詞 tabulate(製表)
(table 的拉丁文字源 tabula,而字根 -ate 是「做⋯⋯」的意思)

https://zh.wikipedia.org/wiki/%E8%A3%BD%E8%A1%A8%E9%8D%B5
https://en.wikipedia.org/wiki/Tab_key

那個㊣其實沒啥。就像是一種符號的標識。
其實原本是用☆的。後來才改成用㊣。
這已經改完好幾年了。也很懶的換了。

再來,其實不用table來做解釋。其原因是某些編輯器或是程式語言。
它是真的有製表用的符號。
所以才需要做區分。免得被誤解。

我要發表回答

立即登入回答