C语言中 int n = xx; 与 int n; n = xx; 这两种定义方式有什么不同?

C语言中
int n = xx;

int n;
n = xx;
这两种定义方式有什么不同?

第一种是定义int变量同时赋予该变量初值
第二种是定义变量后,再赋初值

应该是没有运行上的不同.

比如
int n = xx;
int a[n];

int n;
int a[n];
n =xx;
这两段代码中为什么第一段是正确的,而第二段是错误的?

从执行的时候来看。
第一种,在程序载入的时候,该单元的值已经是xx了
第二种,在程序中有一个赋值的操作指令。
也就是说,执行过程中,第二种比第一种多执行了一个指令。
虽然看上去多执行一个指令是没什么的,现在的按G计算频率的计算机,一个指令的执行可能就是10^-9秒级别。但是凡事就怕多。这个函数如果要在你吃的程序里执行1亿次,也要多花0.1秒了

一个声明的同时就给它赋值 还有一个是先声明再赋值 但是两者其实是一样的 编译的时候 会把第一条语句拆分为后面的两条语句了

对于int等简单变量,建议给初始值,这不消耗cpu执行,又能确保程序正确,何乐不为?

一个是定义变量时直接赋值,另一个是定义完变量再赋值

对于楼主,我个人感觉两条语句差不多,但是这个“ int n = xx; int a[n]; 与 int n; int a[n]; n =xx; ”中的后者,n定义后是随机值。

第一种是在定义变量时就给其赋值,第二种是先定义(此时其是一个不确定的数),后赋值,但建议在定义简单变量时直接赋值,这是好习惯。

推荐博客
http://blog.csdn.net/zlhy_/article/details/8442573
写的很好,相信你看了之后会明白的

int n = xx;是定义时进行初始化
int n;n = xx;是定义之后才初始化,没有初始化的变量不可以直接使用
实际使用时无影响

第一个是对的????

编译成程序的时候运行结果是一样的,但是,有的编程环境不支持定义的时候直接负值

如果两句中间没有任何其他语句则完全等价,只是写法不同而已。编译器会生成完全一样的机器指令。
图片说明
图片说明
(通过反汇编可以看出两者完全等价,机器指令形式上一模一样)

第一个是定义与初始同时,第二个是先定义后初始化

意义上是一样的
只是一个是定义变量时直接赋值,另一个是定义完变量再赋值
如果可以最好是在定义变量是就附上初值

两种写法都可以,怎么用,depends on you