标题来自Marshall Cline 着名的网站C++ FAQ.
作者声称以下两个代码示例之间存在差异.
假设List是某个类的名称.然后函数f()声明一个名为x的本地List对象:
void f()
{
List x; // Local object named x (of class List)
...
}
Run Code Online (Sandbox Code Playgroud)
但是函数g()声明了一个名为x()的函数,它返回一个List:
void g()
{
List x(); // Function named x (that returns a List)
...
}
Run Code Online (Sandbox Code Playgroud)
但使用第二种变体是否真的错了?
如果真的是一个声明,编译器会不会抱怨你不能在函数中声明一个函数?
目前我以这种方式声明所有变量:
declare
x int;
y int;
z int;
begin
...
end
Run Code Online (Sandbox Code Playgroud)
是否可以在一行中声明x,y和z(具有相同类型),例如:
declare
x, y, z int;
begin
...
end
Run Code Online (Sandbox Code Playgroud)
到目前为止,我还没有在文档中找到任何提示......
我刚刚阅读了有关字符串数据类型的Rust文档,其中指出:
Rust
&str虽然不止这么做.AString是堆分配的字符串.此字符串是可增长的,并且也保证为UTF-8.
麻烦:我想显式声明变量类型如下:
let mystring : &str = "Hello"; // this works
let mystring : String = "Hello"; // this does not. Why?
Run Code Online (Sandbox Code Playgroud) 我是java的新手.我目前正在阅读一些关于静态变量的文章.当我试图实现我的学习时,我遇到了关于静态变量的问题.这是第一个代码示例.
public class Human {
// in Human.java
public static int population = 0;
public static void main(String[] argv) {
System.out.println(population);
}
}
Run Code Online (Sandbox Code Playgroud)
此代码工作正常,结果为0.但对于以下代码,我不允许编译它.
public class Human {
// in Human.java
public class Charlie extends Human {
public static int number = 0;
}
public static void main(String[] argv) {
System.out.println(new Human().new Charlie().number);
}
}
Run Code Online (Sandbox Code Playgroud)
发生错误:除非使用常量表达式初始化,否则不能在非静态内部类型中将字段编号声明为静态
我对这种情况很困惑.对于第一个代码示例,我的Human类是非静态的,我被允许在其中声明一个静态变量.为什么我不能为我的第二个代码示例做同样的事情.
任何帮助,将不胜感激.谢谢.:)
#include <stdio.h>
int main()
{
int i;
for ( i=0; i<5; i++ )
{
int i = 10;
printf ( "%d", i );
i++;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此变量i在for循环外声明,并在for循环内再次声明和初始化.C如何允许多个声明?
我需要i根据条件进行设置:
let i = null
nightmode === true ? i = 1 : i = 0
Run Code Online (Sandbox Code Playgroud)
是否可以i在三元表达式内声明,或者是否必须在三元表达式之外(以处理范围界定)?
我绝对讨厌这些不必要的编程步骤,你在一行上声明和分配一个变量,然后在下一行请求输入.
为了简短起见,我想创建一个变量并在同一行上请求输入.
目前我正在写这样的代码:
string name = "";
cout << "Please enter your name: ";
cin >> name; //Too many steps for no reason
Run Code Online (Sandbox Code Playgroud)
这有点我的目标:
string name = cin >> name
Run Code Online (Sandbox Code Playgroud)
显然,这条线在C++中不起作用,如果我闭上眼睛并捕食它,它也会起作用.
这样做有一个小技巧吗?我的意思是它可以在分配数组时使用for循环,为什么不在一行上声明和输入分配?
我知道读者会试着跳出窗外.goto证明了这个理论,是的,我自豪地使用它:)
任何帮助赞赏!
如果编写以下代码会是错误的吗?
Sub Something()
Dim i As integer
Dim xRange As Range
Dim yRange As Range
Set xRange= Range("x_table")
Set yRange= Range("y_table")
For i = 1 To xRange.Columns.Count
xRange.Columns(i) = Application.Sum(y_table.Columns(i))
Next i
End Sub
Run Code Online (Sandbox Code Playgroud)
没有具体声明每个变量?像吼叫;
Sub Something()
Set xRange= Range("x_table")
Set yRange= Range("y_table")
For i = 1 To xRange.Columns.Count
xRange.Columns(i) = Application.Sum(y_table.Columns(i))
Next i
End Sub
Run Code Online (Sandbox Code Playgroud) 该网站说,"不要你的变量给予相似的名称.例如,编译器可以假定forgiveme和forgivemenot是同一个变量.如果是的话,可能会出现一个丑陋的局面."
我从来没有在变量命名中读过这个问题.这种丑陋的情况什么时候最有可能发生?他们说编译器可能认为它们不是同一个变量是什么意思?
如果我有以下代码:
#include <stdio.h>
#define VAR_NAME a_variable
int VAR_NAME = 42;
int main()
{
printf("%i\n", VAR_NAME);
printf("%i\n", a_variable);
a_variable = 123;
printf("%i\n", VAR_NAME);
printf("%i\n", a_variable);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
宣言是否a_variable明确?在我的系统上,声明了一个intnamed a_variable,但是我是否必须担心声明int命名的备用编译器VAR_NAME?
顺便说一下,上面的代码输出如下:
42
42
123
123
Run Code Online (Sandbox Code Playgroud)
编辑:
此外,如果前一个定义明确,我可以做以下事情吗?
#define VAR_NAME a_variable
...
#define DECL_VAR int VAR_NAME
// Declare an int named a_variable
DECL_VAR;
Run Code Online (Sandbox Code Playgroud)