最初由 sable93 发布
what does the expression x^=y^=x^=y do?
What is the output:
printf( "[%c]-[%c]", a[++i], a[i++] )
a = "ABCDE"
i = 2;
所有ANSI c language 支持的函数调用,入栈都是从右到左,所不同的是谁清栈。告诉我从左到右入栈怎么实现...参数传递?至于__pascall calling convension, 是BCB为了支持delphi的搞的,完全破坏了C的初衷。最初由 dragonLinux 发布
看来你还真是个高手,熟识各种编译器!
我会找找,然后你解释一下!
what does the expression x^=y^=x^=y do?
我也没记住它的优先级,是从左到右,还是反之,可以反汇编看一下就知道了是不是中间结果被影响。
What is the output:
printf( "[%c]-[%c]", a[++i], a[i++] )
a = "ABCDE"
i = 2;
这个也依赖于它的使用场景,如使用什么调用方式,如:stdcall,c, pascal,fastcall...,但一般来说printf是应该遵循C调用规则的,否则会出问题。
所以可能是:[E]-[C]
同意mooncake的看法,真的在程序里写出这样的代码来只会自找麻烦。我最近遇到一个笔试题,要求使用模版编写一个双向链表来实现栈和队列的功能,要求所有函数异常透明并且异常安全(比如说在Pop函数里有可能会间接调用到实例化类的拷贝构造函数,而该拷贝构造函数有可能会抛出异常,要求Pop函数必须继续抛出该异常而且不能损坏内部数据结构),然后写一个针对特定类的偏特化实现。另外一个题目则仍然是实现一个string类,但是要求实现类似于MFC中CString的内存实例共享。最初由 mooncake 发布
所有ANSI c language 支持的函数调用,入栈都是从右到左,所不同的是谁清栈。告诉我从左到右入栈怎么实现...参数传递?至于__pascall calling convension, 是BCB为了支持delphi的搞的,完全破坏了C的初衷。
实际上求值和入栈并不一定同样顺序,所以我说这样写程序的人是找抽。以这样“技巧”为荣的程序员只能被列为junior.
最初由 mooncake 发布
所有ANSI c language 支持的函数调用,入栈都是从右到左,所不同的是谁清栈。告诉我从左到右入栈怎么实现...参数传递?至于__pascall calling convension, 是BCB为了支持delphi的搞的,完全破坏了C的初衷。
实际上求值和入栈并不一定同样顺序,所以我说这样写程序的人是找抽。以这样“技巧”为荣的程序员只能被列为junior.
最初由 dragonLinux 发布
看来你还真是个高手,熟识各种编译器!
我会找找,然后你解释一下!
what does the expression x^=y^=x^=y do?
我也没记住它的优先级,是从左到右,还是反之,可以反汇编看一下就知道了是不是中间结果被影响。
What is the output:
printf( "[%c]-[%c]", a[++i], a[i++] )
a = "ABCDE"
i = 2;
这个也依赖于它的使用场景,如使用什么调用方式,如:stdcall,c, pascal,fastcall...,但一般来说printf是应该遵循C调用规则的,否则会出问题。
所以可能是:[E]-[C]