关于三角转换

LI-O 2013-08-04 09:29:47
#include<stdio.h>

int main(void)
{
int a,b,c;
a=2;
b=3;
printf("%d %d\n",a,b);
c=a;
a=b;
b=c;
printf("%d %d\n",a,b);
return 0;

}

结果正确。
好吧。我又晕了。
首先。 a=2 b=3

c=a, c=2;

a=b, a=3;

b=c, b=2;


这个思维正确吗。
那么, 当c=a时 原来的a=2 变成空值了, 所以才能 a=b?
我记得 = 赋值的意思,
那么从这个公式中 可以认为,
c=a 将 a值 赋 给 c/
a=b 将 b值 赋 给 a/.

如果没有 c=a 。可以直接将 b 值赋给 a 吗?
求解。
...全文
200 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
max_min_ 2013-08-05
  • 打赏
  • 举报
回复
引用 6 楼 w15tp 的回复:
[quote=引用 4 楼 max_min_ 的回复:]

#include<stdio.h>

int main(void)
{
int a,b,c;
a=2;
b=3;
printf("%d  %d\n",a,b);
    c=a; // 赋值后: c = a =2, c =2 ,a = 2; 
    a=b; // 赋值后: a = b = 3, a =3, b =3;
    b=c; // 赋值后: b =c =2 ; b =2 ;
   //所以三歩操作完后 a =3, b = 2 , c= 2;
printf("%d %d\n",a,b);
return 0;

}
如果 把 c=a 改成 a=c 运行就错误、[/quote] 你初始化下 c 的值先! 你只是申明,没有分配空间的哦!

int a,b,c = 0; //初始化下,再赋值
LI-O 2013-08-05
  • 打赏
  • 举报
回复
引用 4 楼 max_min_ 的回复:

#include<stdio.h>

int main(void)
{
int a,b,c;
a=2;
b=3;
printf("%d  %d\n",a,b);
    c=a; // 赋值后: c = a =2, c =2 ,a = 2; 
    a=b; // 赋值后: a = b = 3, a =3, b =3;
    b=c; // 赋值后: b =c =2 ; b =2 ;
   //所以三歩操作完后 a =3, b = 2 , c= 2;
printf("%d %d\n",a,b);
return 0;

}
如果 把 c=a 改成 a=c 运行就错误、
赵4老师 2013-08-05
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试是程序员必须掌握的技能之一。
LI-O 2013-08-05
  • 打赏
  • 举报
回复
谢谢啊,,,
LI-O 2013-08-05
  • 打赏
  • 举报
回复
引用 19 楼 max_min_ 的回复:
[quote=引用 17 楼 w15tp 的回复:] 点错了。 应该是。。 char a[] = "csdn"; 没有为a 指定字节大小。 难道 不指定也行?
一下午都没做事了,都在帮你回答各种问题了[/quote] 也就是说。。如果 #include<stdio.h> int main(void) { char a[30]; scanf("%s",a); printf("%s",a); return 0; } 去掉 【30】 的时候 运行时会出现 提示 “XXX" 指令用的”XXX“内存 该内存不能为”written" 可是结果照样正常运行。 可不可以理解为/ 由于没有赋予 变量a 的 内存大小, 所以系统 为它随机选定了一个 内存空间。 由于事先没有声明 ,所以系统给出提示, 但由于 已经运行 所以能够正常显示结果, 如果变量的内存 大的话 也许会引起 严重的错误, 比如 ,卡机。 正确不,
max_min_ 2013-08-05
  • 打赏
  • 举报
回复
引用 17 楼 w15tp 的回复:
点错了。 应该是。。 char a[] = "csdn"; 没有为a 指定字节大小。 难道 不指定也行?
一下午都没做事了,都在帮你回答各种问题了
max_min_ 2013-08-05
  • 打赏
  • 举报
回复
引用 17 楼 w15tp 的回复:
点错了。 应该是。。 char a[] = "csdn"; 没有为a 指定字节大小。 难道 不指定也行?
这是因为后面跟的是字符串常量,编译器能知道大小了
LI-O 2013-08-05
  • 打赏
  • 举报
回复
点错了。 应该是。。 char a[] = "csdn"; 没有为a 指定字节大小。 难道 不指定也行?
LI-O 2013-08-05
  • 打赏
  • 举报
回复
引用 15 楼 max_min_ 的回复:
[quote=引用 14 楼 w15tp 的回复:] [quote=引用 13 楼 max_min_ 的回复:]

#include<stdio.h>

int main(void)
{
  char a[] = "csdn";
  printf("%s",c); //可以这样的
  printf("%s","sda"); //printf函数是格式输出而已,根据你对应的数据类型
return 0;
}
呵呵。 谢谢啦。 提醒一下。—————— 第 6行输 错了。。 应该是/ printf("%c",'c'); [/quote]

 printf("%s",a);// 这是没错的,不需要冒号的,变量不需要,
[/quote] 最后一个问题。。。 为什么在你的 代码里。 printf("%s","sda");
max_min_ 2013-08-05
  • 打赏
  • 举报
回复
引用 14 楼 w15tp 的回复:
[quote=引用 13 楼 max_min_ 的回复:]

#include<stdio.h>

int main(void)
{
  char a[] = "csdn";
  printf("%s",c); //可以这样的
  printf("%s","sda"); //printf函数是格式输出而已,根据你对应的数据类型
return 0;
}
呵呵。 谢谢啦。 提醒一下。—————— 第 6行输 错了。。 应该是/ printf("%c",'c'); [/quote]

 printf("%s",a);// 这是没错的,不需要冒号的,变量不需要,
LI-O 2013-08-05
  • 打赏
  • 举报
回复
引用 13 楼 max_min_ 的回复:

#include<stdio.h>

int main(void)
{
  char a[] = "csdn";
  printf("%s",c); //可以这样的
  printf("%s","sda"); //printf函数是格式输出而已,根据你对应的数据类型
return 0;
}
呵呵。 谢谢啦。 提醒一下。—————— 第 6行输 错了。。 应该是/ printf("%c",'c');
max_min_ 2013-08-05
  • 打赏
  • 举报
回复

#include<stdio.h>

int main(void)
{
  char a[] = "csdn";
  printf("%s",c); //可以这样的
  printf("%s","sda"); //printf函数是格式输出而已,根据你对应的数据类型
return 0;
}
LI-O 2013-08-05
  • 打赏
  • 举报
回复
引用 11 楼 max_min_ 的回复:
[quote=引用 10 楼 w15tp 的回复:] [quote=引用 9 楼 max_min_ 的回复:] [quote=引用 8 楼 w15tp 的回复:] [quote=引用 7 楼 max_min_ 的回复:] [quote=引用 6 楼 w15tp 的回复:] [quote=引用 4 楼 max_min_ 的回复:]

#include<stdio.h>

int main(void)
{
int a,b,c;
a=2;
b=3;
printf("%d  %d\n",a,b);
    c=a; // 赋值后: c = a =2, c =2 ,a = 2; 
    a=b; // 赋值后: a = b = 3, a =3, b =3;
    b=c; // 赋值后: b =c =2 ; b =2 ;
   //所以三歩操作完后 a =3, b = 2 , c= 2;
printf("%d %d\n",a,b);
return 0;

}
如果 把 c=a 改成 a=c 运行就错误、[/quote] 你初始化下 c 的值先! 你只是申明,没有分配空间的哦!

int a,b,c = 0; //初始化下,再赋值
[/quote] 修改之后 结果 2 3 3 0 结果还是/ c=0; a=c // 此时 将c 值赋给 a 即 a=0 a=b // 此时将 b值 赋给 a 即 a=3 b =c //此时 将 c值 赋给 b 即 b=0 所以 结果 3 0[/quote] 是的!正确的, 还有那里不明白?[/quote] 关于初始化 我还是不太明白。 int 已经为 变量分配了空间 //这是在教材中说的。 所以 你说的为c 初始化, 有些 不正确。 [/quote] 好吧!这里是在main函数体里,在这里类似全局了 应该是申明加定义了!

void test_func()
{
    int a ; //这是申明
    a = 10; //定义
    int b =100; //申明加定义
}
[/quote] 哦。谢谢, 那为什么常常都要为 循环语法中的 变量初始化。? 我在百度上实在是没查到/。。。 还有。#include<stdio.h> int main(void) { printf("%s","sda"); return 0; } 这个例子中。 输出语句里有 两个 双引号 。 我本来还担心 程序会出错。 可是结果正确。 那是不是在 这个里面。 关键就双引号后面的 逗号 来分开 输出语句 和所指的 数值或 变量。
max_min_ 2013-08-05
  • 打赏
  • 举报
回复
引用 10 楼 w15tp 的回复:
[quote=引用 9 楼 max_min_ 的回复:] [quote=引用 8 楼 w15tp 的回复:] [quote=引用 7 楼 max_min_ 的回复:] [quote=引用 6 楼 w15tp 的回复:] [quote=引用 4 楼 max_min_ 的回复:]

#include<stdio.h>

int main(void)
{
int a,b,c;
a=2;
b=3;
printf("%d  %d\n",a,b);
    c=a; // 赋值后: c = a =2, c =2 ,a = 2; 
    a=b; // 赋值后: a = b = 3, a =3, b =3;
    b=c; // 赋值后: b =c =2 ; b =2 ;
   //所以三歩操作完后 a =3, b = 2 , c= 2;
printf("%d %d\n",a,b);
return 0;

}
如果 把 c=a 改成 a=c 运行就错误、[/quote] 你初始化下 c 的值先! 你只是申明,没有分配空间的哦!

int a,b,c = 0; //初始化下,再赋值
[/quote] 修改之后 结果 2 3 3 0 结果还是/ c=0; a=c // 此时 将c 值赋给 a 即 a=0 a=b // 此时将 b值 赋给 a 即 a=3 b =c //此时 将 c值 赋给 b 即 b=0 所以 结果 3 0[/quote] 是的!正确的, 还有那里不明白?[/quote] 关于初始化 我还是不太明白。 int 已经为 变量分配了空间 //这是在教材中说的。 所以 你说的为c 初始化, 有些 不正确。 [/quote] 好吧!这里是在main函数体里,在这里类似全局了 应该是申明加定义了!

void test_func()
{
    int a ; //这是申明
    a = 10; //定义
    int b =100; //申明加定义
}
LI-O 2013-08-05
  • 打赏
  • 举报
回复
引用 9 楼 max_min_ 的回复:
[quote=引用 8 楼 w15tp 的回复:] [quote=引用 7 楼 max_min_ 的回复:] [quote=引用 6 楼 w15tp 的回复:] [quote=引用 4 楼 max_min_ 的回复:]

#include<stdio.h>

int main(void)
{
int a,b,c;
a=2;
b=3;
printf("%d  %d\n",a,b);
    c=a; // 赋值后: c = a =2, c =2 ,a = 2; 
    a=b; // 赋值后: a = b = 3, a =3, b =3;
    b=c; // 赋值后: b =c =2 ; b =2 ;
   //所以三歩操作完后 a =3, b = 2 , c= 2;
printf("%d %d\n",a,b);
return 0;

}
如果 把 c=a 改成 a=c 运行就错误、[/quote] 你初始化下 c 的值先! 你只是申明,没有分配空间的哦!

int a,b,c = 0; //初始化下,再赋值
[/quote] 修改之后 结果 2 3 3 0 结果还是/ c=0; a=c // 此时 将c 值赋给 a 即 a=0 a=b // 此时将 b值 赋给 a 即 a=3 b =c //此时 将 c值 赋给 b 即 b=0 所以 结果 3 0[/quote] 是的!正确的, 还有那里不明白?[/quote] 关于初始化 我还是不太明白。 int 已经为 变量分配了空间 //这是在教材中说的。 所以 你说的为c 初始化, 有些 不正确。
max_min_ 2013-08-05
  • 打赏
  • 举报
回复
引用 8 楼 w15tp 的回复:
[quote=引用 7 楼 max_min_ 的回复:] [quote=引用 6 楼 w15tp 的回复:] [quote=引用 4 楼 max_min_ 的回复:]

#include<stdio.h>

int main(void)
{
int a,b,c;
a=2;
b=3;
printf("%d  %d\n",a,b);
    c=a; // 赋值后: c = a =2, c =2 ,a = 2; 
    a=b; // 赋值后: a = b = 3, a =3, b =3;
    b=c; // 赋值后: b =c =2 ; b =2 ;
   //所以三歩操作完后 a =3, b = 2 , c= 2;
printf("%d %d\n",a,b);
return 0;

}
如果 把 c=a 改成 a=c 运行就错误、[/quote] 你初始化下 c 的值先! 你只是申明,没有分配空间的哦!

int a,b,c = 0; //初始化下,再赋值
[/quote] 修改之后 结果 2 3 3 0 结果还是/ c=0; a=c // 此时 将c 值赋给 a 即 a=0 a=b // 此时将 b值 赋给 a 即 a=3 b =c //此时 将 c值 赋给 b 即 b=0 所以 结果 3 0[/quote] 是的!正确的, 还有那里不明白?
LI-O 2013-08-05
  • 打赏
  • 举报
回复
引用 7 楼 max_min_ 的回复:
[quote=引用 6 楼 w15tp 的回复:] [quote=引用 4 楼 max_min_ 的回复:]

#include<stdio.h>

int main(void)
{
int a,b,c;
a=2;
b=3;
printf("%d  %d\n",a,b);
    c=a; // 赋值后: c = a =2, c =2 ,a = 2; 
    a=b; // 赋值后: a = b = 3, a =3, b =3;
    b=c; // 赋值后: b =c =2 ; b =2 ;
   //所以三歩操作完后 a =3, b = 2 , c= 2;
printf("%d %d\n",a,b);
return 0;

}
如果 把 c=a 改成 a=c 运行就错误、[/quote] 你初始化下 c 的值先! 你只是申明,没有分配空间的哦!

int a,b,c = 0; //初始化下,再赋值
[/quote] 修改之后 结果 2 3 3 0 结果还是/ c=0; a=c // 此时 将c 值赋给 a 即 a=0 a=b // 此时将 b值 赋给 a 即 a=3 b =c //此时 将 c值 赋给 b 即 b=0 所以 结果 3 0
max_min_ 2013-08-04
  • 打赏
  • 举报
回复

#include<stdio.h>

int main(void)
{
int a,b,c;
a=2;
b=3;
printf("%d  %d\n",a,b);
    c=a; // 赋值后: c = a =2, c =2 ,a = 2; 
    a=b; // 赋值后: a = b = 3, a =3, b =3;
    b=c; // 赋值后: b =c =2 ; b =2 ;
   //所以三歩操作完后 a =3, b = 2 , c= 2;
printf("%d %d\n",a,b);
return 0;

}
LI-O 2013-08-04
  • 打赏
  • 举报
回复
引用 2 楼 davidyu720 的回复:
即使没有执行 c=a ,也可以直接将 b 的值赋给 a 。 这两者之间无关。
int a ,b; a=3; b=2; a=b;//此时 b 为空值, printf("%d",a); 结果就是 a= 2 对不对。
davidyu720 2013-08-04
  • 打赏
  • 举报
回复
即使没有执行 c=a ,也可以直接将 b 的值赋给 a 。 这两者之间无关。
加载更多回复(1)

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧