2 xyhqqlove xyhqqlove 于 2016.01.23 19:21 提问

为什么视频上这个代码输出的是1 2,我自己运行输出的是2 1?

int main()
{
int a=1;
int b=2;
swap(a,b);
printf("%d %d",a,b);
}
void swap(int a, int b)
{
int t=a;a=b;b=t;
}

4个回答

caozhy
caozhy   Ds   Rxr 2016.01.23 19:24
已采纳

下断点调试了下,swap(a,b);根本没有执行你定义的那个,而是系统标准库的那个,所以交换成功了。

wanganzhi123
wanganzhi123   2016.01.23 19:28

可以提前把swap函数声明一下

rl529014
rl529014   2016.01.23 21:43

如果在使用之前声明了swap函数,两个数字也不会交换的,因为是传的值,而不是地址。

rl529014
rl529014   2016.01.23 21:42

你子函数没有声明,主函数运行到调用子函数那一句便会出错,提示没有定义swap()函数。
不管使用函数还是变量,都必须先声明后使用,这是原则。
所以如果不声明swap函数,这个程序是不能通过编译的,至少在VS2010,VC6.0,DeVC++这三个编译器上面不能通过编译(我都试过啦)。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
下面程序的功能是在屏幕上显示图形:
1 2  1 3  2   1 4  3    2  1 5  4    3  2  1 #include int main(int argc, const char * argv[]) {     int i,j;     for (i=1; i         for (j=i; j>=1; j--) {             printf("%2d",j);
有四个线程1、2、3、4,线程1的功能就是输出1,线程2的功能就是输出2,以此类推......... 现在有四个文件A B C D,初始都为空。现要让四个文件呈如下格式:A:1 2 3 4 1 2..
具体题目如下: 有四个线程1、2、3、4, 线程1的功能就是输出1,线程2的功能就是输出2, 以此类推.........  现在有四个文件A B C D, 初始都为空。现要让四个文件呈如下格式: A:1 2 3 4 1 2.... B:2 3 4 1 2 3.... C:3 4 1 2 3 4.... D:4 1 2 3 4 1.... 以上就是我看到的一个多线程相关的面试题,
1.打印101到200内的素数(质数)【用双层循环实现】&2.打印1到100内前5个可以被3整除的数
public class IsPrime {     public static void main(String[] args)     {         /*         需求:         打印101到200内的素数(质数)【用双层循环实现】         */         /*for(int i=101;i         {             b
-1的补码以及无符号32位输出4294967295
-1的补码(32位)是0xffffffff(8个f)即2^23 -1 = 4294967295 string的搜索函数find,当搜索失败时返回nops(const string:size_type类型) 并初始化为-1 。因为nops是无符号类型,所以当搜索失败时输出的是4294967295(32位)。
完全数的java算法实现
本文为博主原创,接受意见,不喜勿喷!本文以10000以内的完全数作为例子完全数:指所有因子之和(包括1但不包括这个数本身)等于其本身的数叫完全数。例如:6=1+2+3。1、2、3都是6的因子。分析:1.第一层循环是遍历10000以内的所有数(不包括1,因为包括1的话后面会变得更加麻烦),以便于后面做判断; 2.第二层循环遍历10000以内的数的所有因子,判断条件为小于等于i/2是因为每个整数的最大
编写一个Java程序输出1!+2!+3!+……+10!的和
编写一个Java程序输出1!+2!+3!+……+10!的和public void sum() { int sum = 0; for (int i = 1; i < 11; i++) { int n = 0; for (int j = 0; j < i; j++) { n = n * j; } sum
天勤OJ 题目1135: 素数
题目描述 输入一个整数n(2   输入 输入有多组数据。 每组一行,输入n。   输出 输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。   样例输入 70   样例输出
javascript 中 alert(1&&2) ==2 问题
alert(1&&2)  ==2 之前对逻辑与(&&)和逻辑或(||)的认识是 对于 && 是全真为真 对于 || 是一真为真 看到上面的 1&&2 ==2就蒙了 看了看别人的才知道 应该这样计算 1 只要 ‘||’ 前面为false ,无论 ‘||’后面是true 还是false ,结果都返回 ‘||’后面的值。 2 只要 ‘||’ 前面是true ,无论 ‘||’后面是t
java求2~10000之间的完全数
输出2~10000之间的所有完全数,完全数是指其所有因子之和(因子包括1,但不包括该数本身)等于该数的数。例如,6的因子有1、2、3,而且6=1+2+3,所以6是一个完全数。
PAT-打印九九口诀表(简单编程题)
下面是一个完整的下三角九九口诀表: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7