我正在阅读Bjarne Stroustrup撰写的C++编程语言.它在某处使用using关键字来生成函数指针数据类型P1和P2,如下所示:
using P1 = int(?)(int?);
using P2 = void(?)(void);
Run Code Online (Sandbox Code Playgroud)
但是它使用using关键字来创建另一个函数指针数据类型:
using CFT = int(const void?, const void?); -(1)
Run Code Online (Sandbox Code Playgroud)
然后它使用CFT声明一个函数指针并在一些ssort函数中传递它:
void ssort(void? base, siz e_t n, size_t sz, CFT cmp);
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果使用"using"创建函数指针数据类型,则不应该行 - (1)为:
using CFT=int(*)(const void*, const void*);
Run Code Online (Sandbox Code Playgroud)
而不是它实际上是什么?
这是Irvine基于英特尔计算机的汇编语言练习:
在这个例子中,EAX的最终价值是多少?
mov eax,0
mov ecx,10 ; outer loop counter
L1:
mov eax,3
mov ecx,5 ; inner loop counter
L2:
add eax,5
loop L2 ; repeat inner loop
loop L1 ; repeat outer loop
Run Code Online (Sandbox Code Playgroud)
我的解决方案是eax = 28,因为最初的ecx设置为5,所以L2执行5次,因此eax = 3 + 5*5 = 28.然后ecx变为0并且流程移出L2,但由于ecx = 0,L1不会重复,它将移动到下一行而不重复L1.所以eax的最终值= 28.我知道这是错的,但有人能说出我的想法中的错误在哪里?