#include <stdio.h>
int main()
{
int sz = sizeof('A'); // латинское
printf("sz = %d\n", sz);
return 0;
}
char test='A'
на стеке будет 1 байт (+выравнивание). Здесь Си, грубо говоря, проводит преобразование типа — прямо при компиляции. Если написать char test=L'Й'
, сообщит, что преобразование при компиляции ushort→char обрежет результат с 1049 до 25. class AsyncSimpleContext { // интерфейс
public:
virtual void syncExec(const Runnable& body) = 0;
template <class Body>
void syncExecT(const Body& body); // тело упущу, тут всё стандартно,
// идиома «виртуальный шаблон»
}
class FmMain : public AsyncSimpleContext
{
// Разрешите не писать реализацию syncExec — тут всё просто:
// в конструкторе соединить сигнал со слотом методом BlockingQueuedConnection
// в syncExec проверить id потока и или вызвать прямо, или возбудить сигнал.
signals:
void sigSyncExec(const Runnable&);
private slots:
void slotSyncExec(const Runnable&);
}
не удается преобразовать 'char*' в 'int*' для аргумента '1' в 'int
недопустимое преобразование из 'int*' в 'int'
warning: narrowing conversion of '143' from 'int' to 'char' inside
1) То есть считал строку, скомпилировал - получил двоичный код. Выполнил этот двоичный код.
3) Байт-код понятен среде/виртуальной машине (.NET, Java), которая компилирует байт-код в двоичный код
switch (opcode) {
case OP_ADD: {
auto res = stack.pop() + stack.pop();
stack.push(res);
}
.....
}
const struct s & ref = f();
struct s && ref = f();
void modify(s& arg) { ++arg[1]; }
...
modify(f());
namespace Addresses {
uintptr_t myAddresses = processManager.xxx;
}
namespace Addresses {
extern uintptr_t myAddresses;
}
size_t str::replace(
std::string& aString,
const char aWhat,
const char aByWhat)
{
size_t r = 0;
FOR_S(i, 0, aString.length())
if (aString[i] == aWhat) {
aString[i] = aByWhat;
++r;
}
return r;
}
size_t str::replace(
std::string &aString,
char aWhat,
CONST_STR aByWhat)
{
if (aByWhat.length()==1)
{ // Simple replace
return str::replace(aString, aWhat, aByWhat[0]);
}
// More complex replace
static const size_t szWhat = 1;
const size_t szByWhat = aByWhat.length();
size_t p = 0, r = 0;
while ((p = aString.find(aWhat, p)) != std::string::npos)
{
aString.replace(p, szWhat, aByWhat);
p += szByWhat;
++r;
}
return r;
}
style = " style='color:" CNAME_LINK_POPUP "; "
"text-decoration:none; "
"background:qlineargradient(x1:0, y1:1, x2:0, y2:0, "
"stop:0 " CNAME_LINK_POPUP ", stop:0.06 #00000000, stop:1 #00000000);'";