C#の学習者です。構文などは一通り学習していますが、コンピュータ内部の処理やコンパイラの仕様についてはあまり学んで来ていません。
早速ですが、以下のコードを見ていて、ふと気になったことがあるので質問させていただきます。
using System; public class Test { public static void Main() { Console.Write("abc"); Console.Write("def"); } }
このコードを実行すると、"abc"を出力してから、"def"が出力されるので、最終的に"abcdef"が出力されます。
ここでふと気になったのですが、"def"を出力する段階になって、プログラムはどうやってコンソールに既に3文字の文字列が出力されていることがわかるのでしょうか?ここでコンソールに既に出力されている文字列の長さがわかっていないと、例えば"adef"のように一部が重なって表示されたりしそうなのですが、そうなっているのを見たことがありません。
ということは、
- プログラムはなんらかの方法でコンソールに既に表示されている文字列の長さを取得して、文字列が重なって表示されないようにしている。
- 既に表示されている文字列の長さは保持せずに、新たな標準出力が実行されたら、プログラム以外の何かがコンソールに既に表示されている文字列の後ろに文字列を単純に連結(?)している。
の2つのどちらかではないかと思いました。
調べようにも調べ方がわからないので、質問されていただきました。回答よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/08/09 03:29 編集
2017/08/09 03:49
退会済みユーザー
2017/08/09 06:10