user-0 提问: 超越前辈没有？九九乘法表新写法

回复:
user: user-1
content: 引用 21 楼 aqtata 的回复:[quote=引用 7 楼 u012997273 的回复:] 楼主，前辈没那么容易超越的，这里有很多厉害的人的 顺便卖弄一下自己写的一个，不好的地方请多多指正  void Get9x9() { 	char msg[1024] = {0}; 	__asm 	{ 		mov ax, 0 		lea edx, msg loopbegin1: 		cmp ah, 9 		jnb loopend 		inc ah 		mov al, 0 loopbegin2: 		cmp al, ah 		jnb loopend2 		inc al 		mov ch, '0' 		add ch, al 		mov [edx], ch 		inc edx 		mov [edx], 'x' 		inc edx 		mov ch, '0' 		add ch, ah 		mov [edx], ch 		inc edx 		mov [edx], '=' 		inc edx 		push ax 		mov bl, ah 		mul bl 		mov bh, 10 		div bh 		mov ch, al 		add ch, '0' 		mov [edx], ch 		inc edx 		mov ch, ah 		add ch, '0' 		mov[edx], ch 		inc edx 		pop ax 		mov [edx], 32 		inc edx 		jmp loopbegin2	 loopend2: 		mov [edx], 10 		inc edx 		jmp loopbegin1 loopend: 		mov [edx], 10 	} 	printf(msg); }   不支持x64，负分！[/quote] 支持x64的方法也有，呵呵 vc x64不支持__asm，可以交叉编译啊， 就是看你愿意不愿意深追究了

user: user-1
content: 引用 32 楼 TBWood 的回复:[quote=引用 29 楼 u012997273 的回复:] 其实我也只是表达一个意思，对于不完全了解的，别说绝对， 因为很容易误导人而已，也没别的，如果你认为不对，当我没说好了  不要紧张，没事，大家都在学习嘛，结果都是讨论出来的～～～ BitBlt是WINAPI哦，跟3D关系不大，OpenGL，DX是3D绘图，讲的怎么在3D范畴里快速的绘图，大部分都是对内存向量数据的操作。 BitBlt是画布绘图，2D。 [/quote] 恩，那个是直接操作硬件(通过一组接口)， 比gdi快，我也没有紧张啦，呵呵， 你心态也蛮好的，我还以为只有我心态好呢，呵呵

user: user-2
content: 引用 29 楼 u012997273 的回复:其实我也只是表达一个意思，对于不完全了解的，别说绝对， 因为很容易误导人而已，也没别的，如果你认为不对，当我没说好了  不要紧张，没事，大家都在学习嘛，结果都是讨论出来的～～～ BitBlt是WINAPI哦，跟3D关系不大，OpenGL，DX是3D绘图，讲的怎么在3D范畴里快速的绘图，大部分都是对内存向量数据的操作。 BitBlt是画布绘图，2D。

user: user-1
content: 引用 30 楼 wangting627 的回复:难道还有比bitblt快的方式？那为什么双缓冲时候就只采用bitblt了呢 我讨厌你头像，具体说，是讨厌韦德

user: user-3
content: 难道还有比bitblt快的方式？那为什么双缓冲时候就只采用bitblt了呢

user: user-1
content: 其实我也只是表达一个意思，对于不完全了解的，别说绝对， 因为很容易误导人而已，也没别的，如果你认为不对，当我没说好了

user: user-1
content: 引用 26 楼 TBWood 的回复:[quote=引用 25 楼 u012997273 的回复:] [quote=引用 24 楼 TBWood 的回复:] 怎么感觉是要solo啊，是要拉分支写代码决斗么，bitblt和 3D有关系？ 那个到不至于， 你说的最最快的，就是bitblt输出到屏幕画布。。。 这个，不能瞎说的，容易误导人嘛，呵呵[/quote]  恩，我就随便举个说笑的例子，不要那么当真，楼主的算法肯定是有价值的。 关于bitblt输出到CMD屏幕画布，虽是戏言，但也没错，bitblt是WINAPI提供的直接绘制内存图案到窗体的最快方式，CMD窗体最终显示也是一个画布。输出流输出到屏幕的过程，也必然是在CMD窗体画布上绘图的结果。  [/quote] 呵呵，可能咱们说的不一样， 如果仅仅是输出到屏幕，你那个不是最快的， 我不懂游戏开发，不熟悉directX的一套开发， 但是应该比你那个快多了 你认为游戏，播放器之类的输出到屏幕，屏幕切换，会不会比bitblt快多了？

user: user-4
content: # include <stdio.h> # include <stdlib.h>  void f(int i) {     for(int g=(int){1};g<=i;printf("%d*%d=%d\t", i,g++, i*g)); } # define i int main(void){ # define love for(int h=(int){1};h<=9;f(h++),printf("\n")); # define you }  i love you

user: user-2
content: 引用 25 楼 u012997273 的回复:[quote=引用 24 楼 TBWood 的回复:] 怎么感觉是要solo啊，是要拉分支写代码决斗么，bitblt和 3D有关系？ 那个到不至于， 你说的最最快的，就是bitblt输出到屏幕画布。。。 这个，不能瞎说的，容易误导人嘛，呵呵[/quote]  恩，我就随便举个说笑的例子，不要那么当真，楼主的算法肯定是有价值的。 关于bitblt输出到CMD屏幕画布，虽是戏言，但也没错，bitblt是WINAPI提供的直接绘制内存图案到窗体的最快方式，CMD窗体最终显示也是一个画布。输出流输出到屏幕的过程，也必然是在CMD窗体画布上绘图的结果。

user: user-1
content: 引用 24 楼 TBWood 的回复:怎么感觉是要solo啊，是要拉分支写代码决斗么，bitblt和 3D有关系？ 那个到不至于， 你说的最最快的，就是bitblt输出到屏幕画布。。。 这个，不能瞎说的，容易误导人嘛，呵呵

user: user-2
content: 引用 19 楼 u012997273 的回复:[quote=引用 14 楼 TBWood 的回复:] [quote=引用 13 楼 lin5161678 的回复:] [quote=引用 9 楼 TBWood 的回复:] 精神可嘉。。。不过不要觉得 使用 __下划线很帅。可读性极差。  如果一定要比的话，我想没有比下面的代码更快的了。  #include <stdio.h> void main() { char * str= "1x1=1 \n1x2=2 2x2=4\n1x3=3 2x3=6 3x3=9\n1x4=4 2x4=8 3x4=12 4x4=16\n1x5=5 2x5=10 3x5=15 4x5=20 5x5=25\n1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36\n1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49\n1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64\n1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81"; printf(str); }   #include <stdio.h> void main() {puts("1x1=1 \n1x2=2 2x2=4\n1x3=3 2x3=6 3x3=9\n1x4=4 2x4=8 3x4=12 4x4=16\n1x5=5 2x5=10 3x5=15 4x5=20 5x5=25\n1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36\n1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49\n1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64\n1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81");} 比你的做法快 妥妥的[/quote] 汗～～ 到这一步就没意思了。。。 最最快就是bitblt输出到屏幕画布。。。[/quote] 话说，楼主了解屏幕画布么，了解3D么，呵呵，话不能说的太绝对了，自己不知道，并不代表别人也不知道[/quote]  怎么感觉是要solo啊，是要拉分支写代码决斗么，bitblt和 3D有关系？

user: user-5
content: 引用 22 楼 aqtata 的回复:[quote=引用 20 楼 mujiok2003 的回复:] [quote=引用 4 楼 xql2008 的回复:] l楼主你的代码可读性不怎么好啊！ 可读性很重要，呵呵。 [/quote] 这种帖子就别讨论什么可读性了，我还说你搞个9x9乘法表干啥呢？工作中也能用到吗？[/quote] 我认为：除非你写的一次性代码，否则只要有读者（读者可能是你自己哦），就要把可读性放在首位。

user: user-6
content: 引用 20 楼 mujiok2003 的回复:[quote=引用 4 楼 xql2008 的回复:] l楼主你的代码可读性不怎么好啊！ 可读性很重要，呵呵。 [/quote] 这种帖子就别讨论什么可读性了，我还说你搞个9x9乘法表干啥呢？工作中也能用到吗？

user: user-6
content: 引用 7 楼 u012997273 的回复:楼主，前辈没那么容易超越的，这里有很多厉害的人的 顺便卖弄一下自己写的一个，不好的地方请多多指正  void Get9x9() { 	char msg[1024] = {0}; 	__asm 	{ 		mov ax, 0 		lea edx, msg loopbegin1: 		cmp ah, 9 		jnb loopend 		inc ah 		mov al, 0 loopbegin2: 		cmp al, ah 		jnb loopend2 		inc al 		mov ch, '0' 		add ch, al 		mov [edx], ch 		inc edx 		mov [edx], 'x' 		inc edx 		mov ch, '0' 		add ch, ah 		mov [edx], ch 		inc edx 		mov [edx], '=' 		inc edx 		push ax 		mov bl, ah 		mul bl 		mov bh, 10 		div bh 		mov ch, al 		add ch, '0' 		mov [edx], ch 		inc edx 		mov ch, ah 		add ch, '0' 		mov[edx], ch 		inc edx 		pop ax 		mov [edx], 32 		inc edx 		jmp loopbegin2	 loopend2: 		mov [edx], 10 		inc edx 		jmp loopbegin1 loopend: 		mov [edx], 10 	} 	printf(msg); }   不支持x64，负分！

user: user-5
content: 引用 4 楼 xql2008 的回复:l楼主你的代码可读性不怎么好啊！ 可读性很重要，呵呵。

user: user-1
content: 引用 14 楼 TBWood 的回复:[quote=引用 13 楼 lin5161678 的回复:] [quote=引用 9 楼 TBWood 的回复:] 精神可嘉。。。不过不要觉得 使用 __下划线很帅。可读性极差。  如果一定要比的话，我想没有比下面的代码更快的了。  #include <stdio.h> void main() { char * str= "1x1=1 \n1x2=2 2x2=4\n1x3=3 2x3=6 3x3=9\n1x4=4 2x4=8 3x4=12 4x4=16\n1x5=5 2x5=10 3x5=15 4x5=20 5x5=25\n1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36\n1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49\n1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64\n1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81"; printf(str); }   #include <stdio.h> void main() {puts("1x1=1 \n1x2=2 2x2=4\n1x3=3 2x3=6 3x3=9\n1x4=4 2x4=8 3x4=12 4x4=16\n1x5=5 2x5=10 3x5=15 4x5=20 5x5=25\n1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36\n1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49\n1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64\n1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81");} 比你的做法快 妥妥的[/quote] 汗～～ 到这一步就没意思了。。。 最最快就是bitblt输出到屏幕画布。。。[/quote] 话说，楼主了解屏幕画布么，了解3D么，呵呵，话不能说的太绝对了，自己不知道，并不代表别人也不知道

user: user-7
content: 引用 7 楼 u012997273 的回复:楼主，前辈没那么容易超越的，这里有很多厉害的人的 顺便卖弄一下自己写的一个，不好的地方请多多指正  void Get9x9() { 	char msg[1024] = {0}; 	__asm 	{ 		mov ax, 0 		lea edx, msg loopbegin1: 		cmp ah, 9 		jnb loopend 		inc ah 		mov al, 0 loopbegin2: 		cmp al, ah 		jnb loopend2 		inc al 		mov ch, '0' 		add ch, al 		mov [edx], ch 		inc edx 		mov [edx], 'x' 		inc edx 		mov ch, '0' 		add ch, ah 		mov [edx], ch 		inc edx 		mov [edx], '=' 		inc edx 		push ax 		mov bl, ah 		mul bl 		mov bh, 10 		div bh 		mov ch, al 		add ch, '0' 		mov [edx], ch 		inc edx 		mov ch, ah 		add ch, '0' 		mov[edx], ch 		inc edx 		pop ax 		mov [edx], 32 		inc edx 		jmp loopbegin2	 loopend2: 		mov [edx], 10 		inc edx 		jmp loopbegin1 loopend: 		mov [edx], 10 	} 	printf(msg); } 汇编都出来了。

user: user-8
content: 给楼主赞一个~

user: user-9
content: 你这个弱爆了，你去看C混乱比赛的代码，绝对天书

user: user-10
content: 还是双重循环看着舒服些，不想给脑子增加负担0.0