控制台程序,当小弟我按下Ctrl加上任何一个键的时候,到底发生了什么
控制台程序,当我按下Ctrl加上任何一个键的时候,到底发生了什么?
char a;
cin>>a;
比如说这样的,我按Ctrl+A或B,C,D,Z,这些,屏幕上有相应的显示,然后回车。
下面究竟发生了什么,系统往cin流里面都送了些什么东西?
最典型的,我按了Ctrl+Z,发生了什么?是吧Ctrl+Z对应的字符送给了a吗?
------解决方案--------------------
Control-Z = 26 = '\032' = '\x1A'
这些都是有对应ACSII编码的
------解决方案--------------------
cin是开放源代码的。
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!
单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。
VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
------解决方案--------------------
哈哈 每次都能见到这段话
------解决方案--------------------
但不知道被我这几句话将耳朵和眼睛都“磨”出茧子的哪位坛友曾经照做过哪怕一次?

------解决方案--------------------
循序渐进
------解决方案--------------------
先
http://www.microsoft.com/visualstudio/chs/downloads#d-2010-express
点开Visual C++ 2010 Express下面的语言选‘简体中文’,再点立即安装
再参考C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\input.c
char a;
cin>>a;
比如说这样的,我按Ctrl+A或B,C,D,Z,这些,屏幕上有相应的显示,然后回车。
下面究竟发生了什么,系统往cin流里面都送了些什么东西?
最典型的,我按了Ctrl+Z,发生了什么?是吧Ctrl+Z对应的字符送给了a吗?
------解决方案--------------------
Control-Z = 26 = '\032' = '\x1A'
这些都是有对应ACSII编码的
------解决方案--------------------
cin是开放源代码的。
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!
单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。
VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
------解决方案--------------------
哈哈 每次都能见到这段话
------解决方案--------------------
但不知道被我这几句话将耳朵和眼睛都“磨”出茧子的哪位坛友曾经照做过哪怕一次?
------解决方案--------------------
cin是开放源代码的。
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!
单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。
VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
哈哈 每次都能见到这段话
但不知道被我这几句话将耳朵和眼睛都“磨”出茧子的哪位坛友曾经照做过哪怕一次?![]()
循序渐进
------解决方案--------------------
为什么有人说ctrl+z相当于EOF,这个该怎么理解?![]()
先
http://www.microsoft.com/visualstudio/chs/downloads#d-2010-express
点开Visual C++ 2010 Express下面的语言选‘简体中文’,再点立即安装
再参考C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\input.c
File: "C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\input.c" 8 occurrences found on 8 lines
615: if (_TEOF == ch)
771: (_TEOF != ch) &&
1347: if ( (_TEOF == ch) && ((*format != _T('%'))
------解决方案--------------------
(*(format + 1) != _T('n'))) )
1366: if (_TEOF == ch)
1398: if (_TEOF != chr) {
1412: if (ch == _TEOF)
1430: if (_TEOF != chr) {