热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

100分:VC6中一条语句可否定义多个不同类型的变量

1、VC6中一条语句可否定义多个不同类型的变量,如int*a,chrb,unsignedintc,d;可以吗,如果不可以,那定义函数时,括号内的多个形参怎么可以仅用逗号隔开?d前
1、VC6中一条语句可否定义多个不同类型的变量,如 int * a,chr b,unsigned int c,d;

可以吗,如果不可以,那定义函数时,括号内的多个形参怎么可以仅用逗号隔开?

d 前没有类型限定符,到底是按int 还是按int * ,亦或是按unsigned int来定义?


2、 还有一个问题是一行可否写多个语句,如 int a;a=10;shor b;b=100;

28 个解决方案

#1


经测试,一条语句中不可以定义不同类型的变量。
但一行可以写任意多个语句的。
语句以分号结束,不以换行符结束。

#2


当然不可以!形参不是定义变量,那是特殊语法
2当然可以,C/C++忽略所有不影响语法的换行符

#3


有一个需要注意的地方:
int *p1, p2;
其中,p1是指向int的指针,但p2却是int类型变量。
所以,建议*紧靠变量名,而不是类型名。

同时还可以这样理解:*p1的类型是int

#4


你这也要测试?
引用 1 楼 loaden 的回复:
经测试,一条语句中不可以定义不同类型的变量。
但一行可以写任意多个语句的。
语句以分号结束,不以换行符结束。

#5


但是这条语句int * a,chr b,unsigned int c,d;

在VC6中编译执行均没有错误和警告。这怎么解释?

#6


本帖最后由 Loaden 于 2011-04-10 19:41:26 编辑
引用 5 楼 fanafanm 的回复:
但是这条语句int * a,chr b,unsigned int c,d;

在VC6中编译执行均没有错误和警告。这怎么解释?

解释为:VC6 编译器比较弱智。
我用VC10(VS2010SP1)测试错误:
D:\DengYC\LoveDEV\share\Config\TestCMD\Main.cpp(9) : error C2146: syntax error : missing ';' before identifier 'b'
D:\DengYC\LoveDEV\share\Config\TestCMD\Main.cpp(9) : error C2065: 'b' : undeclared identifier
D:\DengYC\LoveDEV\share\Config\TestCMD\Main.cpp(9) : error C2062: type 'unsigned int' unexpected
NMAKE : fatal error U1077: 'D:\DengYC\LoveDEV\bin\cl.exe' : return code '0x2'

#7


一条语句是不可以定义不同类型的变量的。
至于函数的形参那个不是定义变量括号里更不是一个语句。

#8


首先:你必须比编译器严格!编译器不抱错,那说明编译器不完美,而你作为程序员,保证你的程序的正确性是你的事情,而不是编译器的事情。编译器不一定需要对一些特别奇特的语法报错,任何软件都不可能绝对完美的,更何况是13年前的编译器

其次:我不知道你怎么编译的,我在vc6中确实看到了大量的警告

E:\projects\test1\test1.cpp(169) : warning C4518: 'unsigned int ' : storage-class or type specifier(s) unexpected here; ignored
E:\projects\test1\test1.cpp(169) : warning C4228: nonstandard extension used : qualifiers after comma in declarator list are ignored
E:\projects\test1\test1.cpp(169) : warning C4101: 'DanWh' : unreferenced local variable
E:\projects\test1\test1.cpp(169) : warning C4101: 'inArr' : unreferenced local variable
E:\projects\test1\test1.cpp(170) : warning C4101: 'DANWEIL' : unreferenced local variable
E:\projects\test1\test1.cpp(170) : warning C4101: 'DANWEIH' : unreferenced local variable
Linking...


引用 5 楼 fanafanm 的回复:
但是这条语句int * a,chr b,unsigned int c,d;

在VC6中编译执行均没有错误和警告。这怎么解释?

#9


记住:编译器可以犯非常稀奇古怪的错误,只要是软件,就有不尽如人意的地方,编译器也是软件

#10


引用 9 楼 arong1234 的回复:
记住:编译器可以犯非常稀奇古怪的错误,只要是软件,就有不尽如人意的地方,编译器也是软件

所以一个好的编译器,让是可以 帮 助 我们少犯或不犯低级错误。
把警告调到/W4是一个比较好的习惯。

#11


该回复于2011-04-11 08:59:54被版主删除

#12


引用 5 楼 fanafanm 的回复:
但是这条语句int * a,chr b,unsigned int c,d;

在VC6中编译执行均没有错误和警告。这怎么解释?


D:\TEST\1\1.cpp(8) : error C2146: syntax error : missing ';' before identifier 'b'
D:\TEST\1\1.cpp(8) : fatal error C1004: unexpected end of file found

我的VC6.0怎么没通过哈

#13


一条语句当然不能定义多类变量,但一行可以写多条语句,
若是语句        unsigned   int    c,d;                表示c,d 是相同的数据类型

#14


不可以。。

#15


额 你看到过逗号运算符里面定义不同的变量吗?

#16


引用楼主 fanafanm 的回复:
1、VC6中一条语句可否定义多个不同类型的变量,如 int * a,chr b,unsigned int c,d;

可以吗,如果不可以,那定义函数时,括号内的多个形参怎么可以仅用逗号隔开?

d 前没有类型限定符,到底是按int 还是按int * ,亦或是按unsigned int来定义?


2、 还有一个问题是一行可否写多个语句,如 int a;a=10;shor b;b=10……

1 这样不可以,因为完整语句必须以分号结尾,表示一条完整的语句,编译器就是这么设计的,函数本身的定义就是包括N个参数,之间用逗号隔开,一个函数包括形参部分是一个完整部分
2 类似如下:int *a1,a2;这样定义的话,a1是int*类型,亦即指向int型的指针,而a2是一个整型变量
3 银行可以写多个语句,中间用分号隔开即可,如你所举int a;a=10;shor b;b=10;……是可以的,不知道这样解释可以否?

#17


当然是不可以的
注意语法 语法

#18


首先,我在想楼主为什么要这么写呢?

其次,看了楼上几个大侠说的,忍不住把那句话也拿到VS2010里面编译了一下,结论:不能通过。

#19


可以这么定义的
for(int a=0, char b;;);

#20


1不行
2可以,编译器是按 ; 来判断一句语句结束的。 

#21


语法问题还是根据标准来,除非自己实现一个编译器,这样规则可以自己定

#22


引用 19 楼 ulfsaar 的回复:
可以这么定义的
for(int a=0, char b;;);


我很负责的告诉你。你这样是不行的。

不同类型的变量必须用 ; 分号隔开。也就是说for初始部分只能定义一种类型的变量,但个数不限。

#23


1不可以 2 可以

#24


引用 22 楼 typecool 的回复:
引用 19 楼 ulfsaar 的回复:
可以这么定义的
for(int a=0, char b;;);


我很负责的告诉你。你这样是不行的。

不同类型的变量必须用 ; 分号隔开。也就是说for初始部分只能定义一种类型的变量,但个数不限。

我也可以很负责的告诉你,VC6.0绝对可以过,而且结果正确

#include 

void main()
{
for (int a=0, char c='9';;)
{
printf("%d %c\n",a,c);
break;
}
}


输出结果为:0 9

#25


以下是MSDN上for语句的说明的一部分
for
The for keyword is used to create a loop construct. An initialization section, an expression section, and an update section immediately follow the keyword. A semicolon separates each section, and all appear together within at least one set of parentheses.

The initialization section allows the programmer to declare one or more local loop variables. Once the loop ends, these variables are no longer valid.

#26


即使是for 循环里面也不肯能定义不同类型的变量。去看看逗号运算符吧

#27


不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。

#28


引用 6 楼 loaden 的回复:
引用 5 楼 fanafanm 的回复:

但是这条语句int * a,chr b,unsigned int c,d;

在VC6中编译执行均没有错误和警告。这怎么解释?

解释为:VC6 编译器比较弱智。
我用VC10(VS2010SP1)测试错误:
D:\DengYC\LoveDEV\share\Config\TestCMD\Main.cpp(9) : error C2146:……

呵呵,一语道破

推荐阅读
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 本文介绍了最长上升子序列问题的一个变种解法,通过记录拐点的位置,将问题拆分为左右两个LIS问题。详细讲解了算法的实现过程,并给出了相应的代码。 ... [详细]
author-avatar
北斗七星
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有