error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

最近发现一个奇怪的错误,错误提示如下:

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

出现该段错误的源码(某公司校招技术笔试题)如下:

#include<iostream>
using namespace std;

main()
{
	long x=65530;
	long countx=0;
	while(x)
	{
		countx++;
		x=x&(x-1);
	}
	cout<<countx<<endl;
	return countx;
}

编译后错误如下图提示:

解决方法如下:在Properties -> Configuration Properties -> C/C++ -> Command Line -> Additional Options中加入/wd4430 ,如下图:

不过呢?虽然问题解决了,本人也是“知其然不知其所以然”,若哪位高手看到后可以给出这样解决问题的原因,不过个人猜测与编译器内部有关,仅供参考,此猜测的原因如下段代码:

#include<iostream>
using namespace std;

main()
{
	int x=65302250;
	int countx=0;
	while(x)
	{
		countx++;
		x=x&(x-1);
	}
	cout<<countx<<endl;
	return countx;
}

编译过后没有任何问题!!!

可以看到,

int x=65302250;

没有提示错误哦~~~

我们知道int的大小是两字节,即-32768~32767,明显超出范围了。

剩下的交给武林盟主了~~~~~~~

时间: 2024-10-01 16:15:28

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int的相关文章

vs2010调试错误-vs2010 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

问题描述 vs2010 error C4430: 缺少类型说明符 - 假定为 int.注意: C++ 不支持默认 int #include using namespace std; template Tswap(Type &rx,Type &ry) { Type temp=rx; rx=ry; ry=temp; } int main() { int x=2,y=5; cout<<"交换前,x:"<<x<<" y:"

【C++注意事项】5 Top-level const , The auto and decltype Type Specifier

top-level const As we've seen, a pointer is an object that can point to a different object. As a result, we can talk independently about whether a pointer is const and whether the objects to which it can point are const. we use the top-level const to

在flex中监听鼠标右键事件,提示 TypeError Error 2007 参数type不能为空。

在flex中监听鼠标右键事件 ,报错,提示 缺少参数. TypeError: Error 2007: 参数 type 不能为空. at flash.events::EventDispatcher/addEventListener() at com.waylau.eagleos.components::DesktopExplorer/service_resultHandler()[D:\workspaceFB47\com.waylau.eagleos_0.9.5\src\com\waylau\ea

c++的问题-c++中int是一个类么,c++中int是一个类么,取大神,取大神

问题描述 c++中int是一个类么,c++中int是一个类么,取大神,取大神 c++中int是一个类么,取大神,取大神,c++中int是一个类么,取大神,取大神,c++中int是一个类么,取大神,取大神 解决方案 int是基本类型,不是类.C++也不是完全面向对象的语言. 解决方案二: 不是-------- 解决方案三: 不是的哦,只是基本类型而已 解决方案四: int不是一个类.int是一种数据类型.数据类型就是固定内存大小的别名.int占四个字节.所以你定义一个int型变量,他占四个字节.

c++-为什么 1.999(共16个9) 转换成 int 是 2,1.9 转换成 int 是 1?

问题描述 为什么 1.999(共16个9) 转换成 int 是 2,1.9 转换成 int 是 1? <C++ Primer>第五版,中文版.p33. 1.999999999999999(比转换之后少是 2 的少个 9) 也是 1. 微软免费 IDE 2015.g++ 好像也一样. #include <iostream> using namespace std; int main() { double d = 1.9999999999999999; int i = d; cout

link中int i=1;和object o=1;还有int i = (int)o;有什么区别?

问题描述 link中int i=1;和object o=1;还有int i = (int)o;有什么区别? link中int i=1;和object o=1;还有int i = (int)o;有什么区别?o是整数么?int i=o可以么? 解决方案 编译器只认类型,而不管它是这个类型还是它的派生类型. 因此,object o是对象,而int i是整数.你会发现,对前者调用诸如CompareTo之类的方法是无效的. 解决方案二: 虽然不知道你说的是什么,但是难道没有编译器吗?试下不就知道能不能,我

解决Navicat Error: Missing required libmysql_d.dll

在Navicat(H:\Program Files (x86)\Navicat for MySQL)目录下找到libmysql_d.dll,复制到C盘:system/wow64文件夹下. 重新打开navicat即可.

Error XA5101: Missing Android NDK toolchains directory &amp;amp;#x27;\toolchains&amp;amp;#x27;.

问题描述 重装Xamarin开发环境后,提示错误:C:ProgramFiles(x86)MSBuildXamarinAndroidXamarin.Android.Common.targets(3,3):ErrorXA5101:MissingAndroidNDKtoolchainsdirectory'toolchains'.PleaseinstalltheAndroidNDK.(XA5101)(wodubaoandroid)如何解决? 解决方案 解决方案二:NDK找不到,如果已经安装还需要在VS的

C#,int转成string,string转成int

1,int转成string用toString 或者Convert.toString()如下  例如:int varInt = 1; string varString = Convert.ToString(varInt); string varString2 = varInt.ToString(); 2,string转成int如果确定字符串中是可以转成数字的字符,可以用int.Parse(string s),该语句返回的是转换得到的int值;如果不能确定字符串是否可以转成数字,可以用int.Try