C语言中能否在一条定义语句中定义多个不同类型变量?举例说明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中能否在一条定义语句中定义多个不同类型变量?举例说明相关的知识,希望对你有一定的参考价值。

可以的话请举例 ,行还是不行啊

不能。变量由变量名和变量值构成。指定每一变量属于一个类型,这就便于在编译时据此检查在程序中要求对该变量进行的运算是否合法。 参考技术A 用一个分号隔开的就是一条语句,在一条语句中只能定义同类型的变量
例如:int x,y;(x,y都是int型的)
如果想定义不同类型的变量可以分开来写
如:int x,y; char s;
(用分号隔开这属于两条语句,x和y是int型而s是char型)
int x;
char y;
这也是两条语句,记住哦
参考技术B 不行的,
但是如果不是很较真的话,这样也算了:
int a,*p;
//定义了一个int型,一个int*型本回答被提问者采纳
参考技术C 可以,例如:
#include<stdio.h>
void main()

int i=1,char a='b';
printf("%d,%c",i,a);

没有错误。
参考技术D 4楼说得有问题,我用win7旗舰版,VC2010
#include<stdio.h>
void main()

int i=1,char a='b';
printf("%d,%c",i,a);

运行:
1>------ 已启动生成: 项目: 练手, 配置: Debug Win32 ------
1> 练手.cpp
1>c:\users\acer\documents\visual studio 2010\projects\练手\练手\练手.cpp(4): error C2062: 意外的类型“char”
1>c:\users\acer\documents\visual studio 2010\projects\练手\练手\练手.cpp(5): error C2065: “a”: 未声明的标识符
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
结论,不行,勉强只有2楼那种情况

汇编语言中LABEL伪指令的功能?

LABEL 一般用作定义变量和标号的属性,它是与紧接着的下一条变量和标号定义语句相关的,其类型可以为BYTE、WORD、DWORD、QWORD、NEAR、FAR等等。用法为:
buffer(变量) LABEL BYTE(类型)

例如:
Buffer1 LABEL WORD
Buffer2 DB 20 DUP (?)
通常,紧接着的下一条语句定义的类型与LABEL指定的类型不同。而实际上,Buffer1是Buffer2的别名,两者指向内存中的同一个存储地址。换言之,同一组数据定义了两种不同的类型,在接受不同数据类型的访问时,可以指定相应的标号。如接受一个字类型数据访问时,使用Buffer1;接受字节类型数据访问时,使用Buffer2。否则因为数据类型不匹配,编译器编译时将出现异常。

说到LABEL,也不得不提到另一个与之功能相近的伪指令THIS。THIS通常也与它的下一条变量定义语句相关,因为在数据类型过多的情况下接受不同数据类型访问时,使用PTR属性限定符显得十分繁琐,比如起初定义了变量:
Buffer1 EQU THIS WORD
Buffer2 DB 20 DUP (0)
假设有如下语句:
mov AX, Buffer1
mov AX, Buffer2
其中,在作字类型访问时,mov AX, Buffer1相当于mov AX, WORD PTR Buffer2,这样省去了繁琐的PTR操作符。

以上两条语句在内存中的安排:
|...... ......01h ...... ......| 02h | | | |...... ...... ...... ......|
|
(Buffer1、Buffer2首地址)

Buffer1指向的数据为0201h
Buffer2指向的数据为01h

以上是关于C语言中能否在一条定义语句中定义多个不同类型变量?举例说明的主要内容,如果未能解决你的问题,请参考以下文章

c语言的变量定义

c语言一个结构体如何在多个源文件里面调用?

汇编语言中LABEL伪指令的功能?

auto和decltype

C语言问题!让多个函数共享一个变量?

auto和decltype