[C++] 螢幕列印出1-1000這1000個數字,不許用迴圈for while,不許用分支if,不許用跳轉goto

最簡單的是宏展開,很巧妙: #include <stdio.h>#define A(x) x;x;x;x;x;x;x;x;x;x;int main (){int n = 1;A(A(A(printf ("%d ", n++))));return 0;} 比較進階的是用C++的建構函式特性——對象建立時預設調用建構函式:#include <iostream>using namespace std;class A{static int i;public:A(){cout

淺解C語言的標準輸入輸出、標準錯誤

我們都知道用printf( xxx )和fprintf( stdin, xxx )是一個效果。所以stdin是一個FILE*類型的變數。同樣的stdout和stderr也是。他們的定義在stdio.h(GNU實現)裡,其中部分代碼如下:/* Standard streams. */extern struct _IO_FILE *stdin; /* Standard input stream. */extern struct _IO_FILE *stdout;

[C/C++] 不常見的關鍵字(保留字)

restrict關鍵字restrict關鍵字其實是在C語言才有的,是C99提出來的,目前C++還不支援。當一個指標在聲明的範圍內,所有該指標指向的記憶體地區資料只能通過它訪問,而不能通過別的指標。編譯器會對此做檢查。這樣的後果是協助編譯器進行更好的代碼最佳化,產生更有效率的彙編代碼。由於目前只有C99支援,所以編譯命令如下:gcc -std=c99 test.c -o test.bin注意:g++不支援-std=c99,並且也不支援restrict關鍵字 例如:void f(const int

[C++] 編譯器支援的內建函數

所謂內建,就是無需標頭檔就可以使用的函數。今天讀一段C++標準庫的代碼,看到type_traits檔案中調用了一個__is_enum函數,但是找不到函數定義。以下所列函數都是編譯器為了支援標準庫而內建的函數。__is_member_object_pointer __is_member_function_pointer __is_enum __is_union __is_class __is_function __is_standard_layout __is_pod __is_empty

[C/C++] new的幾種用法

new expression這是最常見的一種用法,例如:class A{ int a; };A* array = new A[101];全域的operator new這是C++標準庫為程式員準備的一個預設操作符函數,返回一個對象記憶體,但是不做對象的構造,它的作用和malloc類似,但是它可以拋出異常,預設的是bad_alloc,例如:A* array = (A*) ::operator new( sizeof(A) * 101 );對象的operator

[C/C++] 常見錯誤匯總(1)

1、undefinedreference to '__gxx_personality_v0'編譯器用的是gcc,請換成g++2、將一個源檔案由.cpp 改為.cc

[C/C++] 常見錯誤匯總(2)

1 調用strtok,會修改你輸入的參數。我剛剛犯了一個錯誤,就是先調用了strtok,然後才檢查字串,結果沒有按預期。// 錯誤char buf[256] = "0,100";char* res = strtok( buf, ",;" );if( buf[0] == '0' && buf[1] == '\0' ) return -1;// 正確char buf[256] = "0,100";if( buf[0] == '0' && buf[1] == '\

[C++] 記憶體填充與達夫裝置

若要設定一塊記憶體為指定值,最簡單莫過於memset了,然而它要求pattern是一個位元組,如果想設定一個寬點的類型,例如整型,那麼memset基本就無法發揮功效,除非設定的是0或者-1或者其它值能滿足所有位元組一樣。 下面提供幾個方法,並大致比較一下:1> 普通的for迴圈,一次設定數組各個元素為指定值2> 滾動拷貝,1變2,2變4,4變8,越來越多……3> Duff's Device,

[C++] 關於FD_SETSIZE大小的問題

在linux裡,提到網路編程,就會涉及到select,多工IO,雖然這個效率不是很高,但是對於一般應用還是足夠了。我寫了一個小程式,如下: #include <sys/select.h>#include <sys/socket.h>#include <stdio.h>#define NUM 2000int fds[NUM];int main(){ for( int i = 0; i < NUM; ++i ) { printf("

JICAMA 平台的首個C++應用程式

不久的將來將會建立一個c++庫source:#include <stdio.h>extern "C" int main(int argc, char *argv[]);extern "C" void text_puts(int x, int y, const char *str, char c);int main(int argc, char *argv[]){ text_puts(20,10, "Jicama OS Platform First c plus plus (C++)

Regular Expression Regex-4 (C++)

因為總覺得上回寫的C++代碼太過蹩腳了,心有不甘。畢竟C++是一個很優秀的語言,並且有著眾多出色的模板庫,這麼簡單的一個小程式被我給用成那樣,真的是太慚愧了。代碼絕對不應該這麼臃腫。實際上我有幾個概念模糊不清了,所以導致了代碼的臃腫,一個是輸入輸出資料流的概念模糊了,還有一個是Regex應用不熟悉。於是重溫了輸入輸出資料流,並且詳細的閱讀了Regex的Boost庫的說明文檔。新寫的代碼如下,明顯比原來的代碼優雅了許多:#include <string> #include

Regular Expression Regex-3 (C++)

最後用C++實現了一把,因為STL中尚未包含Regular Expression,因此我使用了Boost中的Regex++。不過因為不是很熟悉,所以代碼很蹩腳,將就看了。呵呵。#include <string> #include <boost/regex.hpp> #include <iostream> #include <fstream> using namespace std; void readFile( const char*

C# Tips: 通過WMI查詢當前作業系統是64位的還是32位的

預備知識:WMI(Windows Management Instrumentation)是內建在 Windows 系列作業系統中核心的管理支援技術,目前WMI 已經是一種規範和基礎結構,通過它可以訪問、配置、管理和監視幾乎所有的 Windows 資源例如磁碟、事件記錄、檔案、檔案夾、檔案系統、網路組件、作業系統設定、效能資料、印表機、進程、註冊表設定等等。WQL(WMI Query Language)就是內建在WMI中的查詢語言,它是 SQL

Regular Expression Regex-1 (C#)

起因是因為一片文章,問到了一個問題,文章是這樣的:Originally Posted by 人就是這樣我想編一個程式,但學CompSci是很久以前的事情了。想請教請教大家。有兩個txt檔案,一個叫source.txt(有很多資料), 一個叫target.txt(空白的)我想把source.txt裡的一些資料提取出來(稍微修改一下),然後寫到target.txt裡面。舉個例子:sourse.txt裡的資料:2oi)4@##(

C# Tips: How to tell if system is little endian or big endian?

上回書說到,如果用C語言來判斷系統的位元組儲存順序 Little endian 和 Big endian ,函數如下: #include <stdint.h> #include <stdio.h> #include <stdlib.h> union TestEndian_Unit { uint16_t value; uint8_t bytes[2]; };

[科普小短文]在C#中調用C語言函數 (Linux & Mono版)

之前寫過一篇小短文:《[科普小短文]在C#中調用C語言函數》,是在Windows平台下基於Microsoft.Net的一個例子。今天我們來做另外一個小例子,是在Linux平台下基於Mono的例子。關於在C#中調用C語言函數的具體技術P/Invoke,在之前那篇文章《[科普小短文]在C#中調用C語言函數》中有介紹,不瞭解的讀者可以去看一下,這裡不多介紹了,直接來看我們的例子。一、準備動態連結程式庫C語言原始碼:Test.c 和我們之前那個Windows平台的代碼是一致的:int sum(int

C# Tips:在繼承中,new 與 override 的區別

在方法、屬性的繼承中,new關鍵字表示隱藏基類的實現,使得子類也可以定義與基類同名同形參的方法和屬性。而override關鍵字表示重寫,基類的方法或屬性在子類中被重寫後,調用子類的方法或屬性一定會從子類執行。說得可能很拗口,但是舉個例子一看就明白了。先看new關鍵字的例子:基類 ControlModel.csusing System;namespace InhibitPropertyDemo{ public class ControlModel { private

C#的資料庫應用如何解決記憶體消耗太大的問題呢?

文章目錄 1. 最開始用最簡單的DataAdapter.Fill(DataTable)的辦法。2. 我嘗試用DataReader讀入資料,然後寫進dtDest3. 純SQL語句。不用DataTable4. 不輸出到資料庫,以CSV輸出到文字檔5.匯出到XML

C# Tips:位元運算相關

共用一堆位操作相關的方法:// -----------------------------------------------------------------------// <copyright file="UInt64MaskHelper.cs" author="Yaping Xin">////// File Name : UInt64MaskHelper.cs// Description : Helper class to

嘗試用C++封裝Socket庫

這兩天又看了幾眼Socket編程,我老是沒長性,總是東看看西看看。還老愛挑毛病,鑽牛角尖,真是不可救藥了。這不,又開始看Socket不順眼了。當時是看了一個朋友給我的一段socket raw編程的代碼,有一段看的我很噁心。如下:if((ErrorCode=WSAStartup(MAKEWORD(2,1),&wsaData))!=0){         printf("WSAStartup failed: %d/n",ErrorCode);         return 2;     }

總頁數: 4314 1 .... 1196 1197 1198 1199 1200 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.