我有一个Lua代码如下:
a, b = 1, 10
if a<b then
print(a)
local a
print(a)
end
print(a, b)
Run Code Online (Sandbox Code Playgroud)
只是一个小问题:
首先,我创建了一个全局变量a = 1;
然后在then块中我使用全局变量a来打印它;
然后我声明了一个未初始化的局部变量a(因此得到的值为nil)
然后我的问题来了:在then块中创建了局部变量a后,我怎样才能访问全局变量a,这是可能的?如果是这样,请给我一个答案:)
在c中,我知道unsigned char的大小为1字节(= 1个八位字节= 8位),并且我知道unsigned char实际上是0到255之间的整数值,现在如果我有以下unsigned char变量:
unsigned char c = 255; //(this value can be any value from 0 to 255)
Run Code Online (Sandbox Code Playgroud)
如何获得包含 8 个元素的表,指示该变量的每个位值(0 或 1)?(像这样:{1, 1, 1, 1, 1, 1, 1, 1})有没有简单的方法可以在c中做到这一点?
a.b[i]一回事(a.b)[i]吗?这里a是结构,b是他的成员(b是数组或指针).
我刚刚读了一篇关于c运算符优先级的文章,它告诉我[](括号)运算符在.(point)之前,这两个c运算符的关联性是从左到右:
a.b.c[i].d[j]
Run Code Online (Sandbox Code Playgroud) 我在bjarne stroustrup的c ++编程语言第4版中尝试了这个例子:
#include <iostream>
#include <string>
#include <vector>
#include <list>
using namespace std;
template<typename T>
using Iterator<T> = typename T::iterator;
template<typename C, typename V>
vector<Iterator<C>> find_all(C& c, V v)
{
vector<Iterator<C>> res;
for (auto p = c.begin(); p!=c.end(); ++p)
if (*p==v)
res.push_back(p);
return res;
}
void test()
{
string m {"Mary had a little lamb"};
for (auto p : find_all(m,'a'))
if (*p!='a')
cerr << "string bug!\n";
// p is a str ing::iterator
list<double> ld {1.1, 2.2, 3.3, 1.1};
for …Run Code Online (Sandbox Code Playgroud) 我在下面有一个非常简单的C函数:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int c;
while ((c = getchar()) != EOF)
putchar(c);
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
我在linux os终端上使用gcc来测试它.结果是:
d
d
e
e
f
f
5
5
56
56
Run Code Online (Sandbox Code Playgroud)
我只想知道:
1.为什么每次按下我的回车键,终端都会重复我输入的字符?
2.为什么我放两个字符(56),这也有效,它是如何工作的?
3.为什么只有Enter键使终端重复,而不是其他键?
4.在Linux终端或像这样的C程序中按Enter键是什么意思?
我在类中有一个静态方法:
public static void MakeThreadModified(string s)
{
new Thread(() =>
{
Thread.CurrentThread.IsBackground = true;
/* run your code here */
while (true)
{
Console.WriteLine(s);
Thread.Sleep(500);
}
}).Start();
}
Run Code Online (Sandbox Code Playgroud)
我在Main()中调用此方法,如下所示:
string[] str = {"A", "B", "C", "D", "E"};
foreach (var v in str)
{
MakeThreadModified(v);
}
Run Code Online (Sandbox Code Playgroud)
我很惊讶地发现结果是:
A
E
C
B
D
Run Code Online (Sandbox Code Playgroud)
但为什么我有这个结果?我认为它会在控制台上连续不断地打印从'A'到'E'的字母,但它只打印每个字母一次.那为什么会这样呢?