下面的程序在C语言中编译得很好,有警告,但是在C++中编译失败。为什么?原因何在?
#include <stdio.h>
int main(void)
{
char a[5]="Hello";
a[0]='y';
puts(a);
for(int i=0;i<5;i++)
printf("%c",a[i]);
return 0;
}
警告:
Warning:[Error] initializer-string for array of chars is too long [
如果在java中声明一个字符串数组,如下所示
String[] words;
这只给了你一个推荐人,对吗?
现在,我来自C的背景,所以我知道C中的“字符串”数组是指向指针的指针,或者是数组的数组。然而,我想知道JVM是如何使用这个声明的…它只是一个参考吗?那么当你给它足够的内存时,它会给字符串不同的长度吗?
这对我来说有点难描述,但我知道字符串只是字符的数组,那么在分配字符串之前,JVM如何确定字符串的长度?它是否重新分配具有新的更新字符串长度的整个新字符串数组。
char array[6][6]; //in C this is necessary because it needs to kn
我习惯了用Java编程,现在正在做一些涉及到一些C++的事情。
我实际上不是在学习C++,我实际上是在使用汇编代码,这是我不知道的C++部分。
我看过我的讲师(大学)的过去的代码,为了定义一个包含我(作为一名Java开发人员)所称的字符串的变量,他将其声明为一个字符。
char get1[] = "Give me the first number:";
C++是否使用字符数组来表示字符串,或者它们是否不同?
对于我使用的极其有限的C++,我是否应该假设它们是相同的,并像我的讲师一样使用char数组?
我要做的就是将这个字符串作为某个点打印到屏幕上(如果你们中任何人知道英特尔x8
我有一个C#结构,通过UDP传递给一个C++应用程序。我检查了字符串字段的长度,得到了C#和C++代码的不同结果。以下是结构的定义:
// C# Side
//-------------
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct stName
{
/// Some data types
[MarshalAs(UnmanagedType.ByValTstr, SizeConst = 20)]
string StringName;
}
// C Side
//---------
struct stName{
我的程序的第一部分是创建两个不同的数组,即登录id和密码。在所有这些都被输入之后,我希望程序有5个不同的IF语句来检查2个数组,看看ID和密码组合是否正确。
我现在正在像这样尝试第一个,但没有成功
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main()
{
char id[5];
char password[8];
int i, j, k;
int access;
char c;
printf("Please enter your ID: ");
scanf
下面是保存为.cpp文件和.c文件的代码
在.c中它编译得很好,但在.cpp中抛出了以下错误
test.cpp:6: error: initializer-string for array of chars is too long
test.cpp:6: error: initializer-string for array of chars is too long
#include< stdio.h>
int main()
{
char str[2][2]= { "12", "12"};
int i;
for(i=0; i<2; i++
我正在使用Unity 2017,在我的项目中,我使用了一个c++ dll文件来定义我的用户信息结构,类似于:
c++ :
struct UserInfo
{
int userID;
int loginID;
char username[32];
char signature[128];
long long goldNum;
int deskID;
}
虽然我在c#中定义了一个结构,比如:
C#:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct UserInfo
我想在大数之间加法,但这会产生一个错误。我正在使用char数组。第55行有一个错误。错误订阅值既不是数组,也不是指针,也不是向量。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
int chrtoint(char a){
int i;
for (i = 48; i<=57; i++)
if (toascii(i)==a) return i-48;
return 0;
}
void main(){
下面是在BigQuery中传递给json的所有值类型的完整列表吗?我通过尝试和错误获得了这个结果,但是没有在文档中找到这个:
select
NULL as NullValue,
FALSE as BoolValue,
DATE '2014-01-01' as DateValue,
INTERVAL 1 year as IntervalValue,
DATETIME '2014-01-01 01:02:03' as DatetimeValue,
TIMESTAMP '2014-01-01 01:02:03
作为对这个问题的后续,它是一个尝试,用于为社区在一个旧的c++98程序中添加基本的翻译功能,我在这里发布了在应用了前一个问题中的一些要点之后的第一次代码迭代:
#include <string>
#include <iostream>
// Not nested in class definition to avoid class namespace in code
enum
{
TR_RELOAD=0,
TR_SAVE,
TR_SIZ
};
class PoorMansTranslations
{
private:
s
静态类型化和动态类型化在堆栈溢出(例如 )上被反复询问。
协商一致意见似乎是(引用上述链接的最高答复):
如果在编译时知道变量的类型,则会静态地输入语言。
一种动态的语言:
如果类型与运行时值相关联,而不是命名变量/字段/等,则该语言是动态键入的。
Perl似乎是静态类型的(或其他静态/动态类型的常见定义)。它有3种类型:标量、数组、散列(为了简单起见忽略引用之类的东西)。类型与变量一起声明:
my $x = 10; # declares a scalar variable named x
my @y = (1, 2, 3);
我正在尝试从我的用户获取一个输入,然后将输入赋给数组索引。例如,用户输入"0 2 4“,而我希望数组的值为array= 0,array1= 2,array2= 4。在C语言上可以这样做吗?我用下面的代码尝试了一下:
int main()
{
int numberOfInput = 0;
int arr[100];
printf("How many numbers you want to type? \n");
scanf("%d", &numberOfInput);
for(int i = 0; i<numberOfInput; i++)
我研究COM已经有一段时间了,我了解COM如何通过使用众所周知的二进制接口来提供语言中立的代码,但直到现在我才知道COM如何提供语言中性数据类型,例如,如果COM组件的实现语言是在C++中生成的,而COM组件的使用者是用Java编写的,并且假设我们有类似的接口函数。
int sum(int x, int y)
所以C++中的整数对象不同于Java中的整数对象,那么COM如何实现中立的数据类型呢?
如果我有一个这样的类:
public class Car {
public string Model { get; set; }
public List<string> Types { get; set; }
}
并做到:
Car _car = new Car();
_car.Model = "1992";
List<string> _types = new List<string>() { "New", "Old" };
_car.Types = _types
并将这些类型的对象保存在MongoDB中,如